二分查找法,顧名思義,是一種一分爲二的查找算法,適用於已排序的數組(大數據量),快速地找到所查找數的位置。算法
源代碼:數組
- static int binarySearch(int[] i, int key){
- Arrays.sort(i);
- int low = 0;
- int high = i.length - 1;
-
-
- while(low <= high){
- int mid = (low + high)>>1;
- if(key > i[mid]){
- low = mid + 1;
- } else if(key < i[mid]) {
- high = mid - 1;
- } else {
- return mid;
- }
- }
-
- return -1;
- }
原理:大數據
在數組中搜索給定Key時,先肯定是有序數組,而後定義數組的最高下標和最低下標high、low,再求出數組的中間下標mid=(low+high)>>1。而後判斷,當low<=high成立時,若數組[mid]值大於key時,將數組下標的底值提升爲mid+1,反之將高值下降爲mid-1,如此,每次將搜索的範圍減少一半,大幅提升搜索效率。spa
附圖:排序