參考: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
x = n ;那麼 讓n 遞歸的除以2,須要x次,才能近視爲1。x即爲時間須要循環的次數。
x = log
n