java 實現折半(二分)查詢
阿新 • • 發佈:2019-02-06
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。 首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。 設定變數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;
}
}
}
}