1. 程式人生 > >Java 實現二分查詢\折半查詢(速度快的查詢有序列表)

Java 實現二分查詢\折半查詢(速度快的查詢有序列表)

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。

        該演算法要求:

        1、  必須採用順序儲存結構。

        2、  必須按關鍵字大小有序排列。

        該演算法時間複雜度最壞為:O(logn)

         注意點有mid、low、high

        其Java實現程式碼如下:

public class BinarySearch {

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generatedmethod stub

       int[] src = {1,3,5,7,8,9};

       System.out.println(binarySearch(src,3));

    }

 

    private static int binarySearch(int[] src, int i) {

       int low=0;

       int high=src.length-1;

       System.out.println("low is"+low);

       System.out.println("high is"+high);

       while(low<=high){

           int mid = (low+high)/2;

           System.out.println("mid is"+mid);

           if(src[mid]==i){

              return mid;

           }else if(i<src[mid]){

              high=mid-1;

           }else{

              low=mid+1;

           }

       }

       return -1;

    }

}