搜索算法(折半查詢)

前言

今天做一個例題 , 用到了折半查詢這個算法 , 所以記錄一下.

  • 折半查詢的效率非常高 , 而且學習起來也非常簡單 , 非常容易理解 .

代碼

代碼利用了泛型 , 也就是說可以支持任意類型的數組進行查詢 .

  • 結合代碼看圖 , 就非常容易理解了.
  • mid表示中間的索引 , key是搜索的值.

分析圖

public class BinSearch<T extends Comparable> {
//繼承於Comparable纔可以使用compareTo進行比較.
    private T[] arr;

    public BinSearch(T[] arr) {
    this.arr = arr;
    }

    public int search(T key ) {

    int low = 0;
    int high = arr.length;
    int mid = 0;    

    while(low <= high ) {
        mid = (low + high ) / 2;  //先獲取中間的位置

        if(key.compareTo(arr[mid]) > 0 ) {
        low = mid + 1;           //說明在中間右邊

        }else if (key.compareTo(arr[mid]) < 0 ){
        high = mid - 1;          //說明在中間左邊

        }else {
        return mid;

        }


    }
}
發佈了26 篇原創文章 · 獲贊 42 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章