1. 程式人生 > >搜尋演算法(折半查詢)

搜尋演算法(折半查詢)

前言

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

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

程式碼

程式碼利用了泛型 , 也就是說可以支援任意型別的陣列進行查詢 .

  • 結合程式碼看圖 , 就非常容易理解了.
  • 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; } } }