二分查找法

二分查找法,顧名思義,是一種一分爲二的查找算法,適用於已排序的數組(大數據量),快速地找到所查找數的位置。算法

源代碼:數組

Java代碼   收藏代碼
  1. /** 
  2.  * @param i 數組 
  3.  * @param key 要查找的Key 
  4.  * @return  
  5.  */  
  6. static int binarySearch(int[] i, int key){  
  7.     Arrays.sort(i);  
  8.     int low = 0;  
  9.     int high = i.length - 1;  
  10.     //int mid = (low + high)/2;        
  11.       
  12.     while(low <= high){              // 計算條件,數組低下標和高下標一直在計算中變化  
  13.         int mid = (low + high)>>1;   // 使用>>比除法計算效率高  
  14.         if(key > i[mid]){  
  15.             low = mid + 1;  
  16.         } else if(key < i[mid]) {  
  17.             high = mid - 1;  
  18.         } else {  
  19.             return mid;  
  20.         }  
  21.     }  
  22.       
  23.     return -1;  
  24. }  

原理:大數據

         在數組中搜索給定Key時,先肯定是有序數組,而後定義數組的最高下標和最低下標high、low,再求出數組的中間下標mid=(low+high)>>1。而後判斷,當low<=high成立時,若數組[mid]值大於key時,將數組下標的底值提升爲mid+1,反之將高值下降爲mid-1,如此,每次將搜索的範圍減少一半,大幅提升搜索效率。spa

附圖:排序

相關文章
相關標籤/搜索