1. 程式人生 > >java 實現折半(二分)查詢

java 實現折半(二分)查詢

    二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
    首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
    設定變數low,high,mid分別指向待查詢區間的下界,上界,中間位置的變數,原始碼如下:
public class BinarySearch {

    public static void main(String[] args) {

        int array[]=new int[]{1,2,3,4,5,5,6,7,8,9,10,11,11,12,13,14,15,16,16,17,18,19,20};
        int low=0;
        int high=array.length-1;
        int mid=-1;
        int x=20;
        while(low<=high){
            mid=(low+high)/2
; if(array[mid]==x){ System.out.println(x+"在陣列中出現的位置"+mid); break; } if(array[mid]<x){ low=mid+1; } if(array[mid]>x){ high=mid-1; } if(low>high){ System.out.println("查詢失敗"
); break; } } } }