二分查找代码

参考: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(logn)呢? (注意:计算机科学中, log 默认都是以2为底的)
最坏的情况为:我们去查找数组中的最后一个元素(或者第一个元素),因为他们都最偏离中间,需要不断折半,直到最后折半后的数组只剩下一个元素。
假设这个数组长度为 n   ,且假设 2 = n ;那么 让n 递归的除以2,需要x次,才能近视为1。x即为时间需要循环的次数。
x = logn
 
 
posted @ 2017-05-25 17:12  china_sdd  阅读(214)  评论(0编辑  收藏  举报