二分查找代碼

參考:http://www.cnblogs.com/lulipro/p/6262248.html
int binarySearch(int[] arr,int target) { int low = 0; int high = arr.length - 1; int mid=-1; while (low <= high) { mid = (high-low)/2 + low ; //使用 (low+high) /2 可能會溢出。由於low和high的和可能會超過int所能表示的範圍 因此用 (high-low)/2+low 來表示mid if (arr[mid] < target) low = mid + 1; else if (arr[mid] > target) high = mid - 1; else //arr[mid] == target return mid; // found } return -1; // not found.

}
最壞時間複雜度爲   O(log n)呢? (注意:計算機科學中, log 默認都是以2爲底的)
最壞的狀況爲:咱們去查找數組中的最後一個元素(或者第一個元素),由於他們都最偏離中間,須要不斷折半,直到最後折半後的數組只剩下一個元素。
假設這個數組長度爲 n   ,且假設 2  = n ;那麼 讓n 遞歸的除以2,須要x次,才能近視爲1。x即爲時間須要循環的次數。
x = log n
相關文章
相關標籤/搜索