一、思路
二分查詢又名折半查詢,顧名思義是分成兩部分,每查詢一次資料減半,所以查詢起來會很快。但是二分查詢的條件是已經有序的資料。
1、設定兩個變數i,j.為查詢的範圍,i一般為0,j一般為陣列長度減一;
2、設定變數mid,mid為所查陣列範圍的中間位置,即mid=(i+j)/2;
3、比較所要查詢的資料val與arr[mid];
4、如果val等於a[mid],找到資料,跳出迴圈
5、如果val小於arr[mid],將查詢範圍鎖定在mid左邊,即j=mid-1;
6、如果val大於arr[mid],將查詢範圍鎖定在mid右邊,即i=mid+1;
7、重複3 ;
//二分查詢
private static int binarysearch(int arr, int first, int last, int val)
//如果所給資料在前半段
else if(val=0;--j);
int idx=binarysearch(arr, 0,arr.length-1,54);
system.out.println(arrays.tostring(arr));
system.out.println(idx);
}
三、結果
四、**的優化
將查詢寫成遞迴的形式,遞迴就是通過自己呼叫自己的方法使得程式更簡單!
遞迴包括了兩部分:
1、遞迴頭
遞迴頭的作用:什麼時候不呼叫自身方法。如果沒有頭,將陷入死迴圈,也就是遞迴的結束條件。
2、遞迴體
遞迴體的作用:在什麼情況下 方法會自己呼叫自己!
**:
private static int binarysearch(int arr,int i,int j,int val)else
}
二分查詢和遞迴的二分查詢
在乙個有序的陣列中查詢給定的資料項,把陣列衝中間分成兩半,然後看要查詢的資料項在陣列的哪一半,再次折半查詢。如下 public int find long searchkey else if lowerbound upperbound else private int recfind long se...
二分查詢及變種二分查詢
二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...
二分查詢與遞迴式二分查詢
二分查詢 public class binarysearch arrays.sort arr todo auto generated method stub int low 0 int high arr.length 1 while low high elseelse 遞迴實現二分查詢 public...