二分搜索方法

来源:互联网 发布:南大碎尸案 知乎 编辑:程序博客网 时间:2024/06/06 12:24
int binarySearch(int list[], int key, int low, int high){int mid;while(low <= high){int mid = (low + high)/2;if (key == list[mid])return mid;else if(key < list[mid])high = mid - 1;elselow = mid + 1;}if (key > list[mid]){return mid+1;}else return mid;}


PS:list中的数组是由小到大有序存放的。

另外讨论一种错误的二分搜索法:

int binarySearch(int list[], int key, int low, int high){int mid;while(low <= high){int mid = (low + high)/2;if (key == list[mid])return mid;else if(key < list[mid])high = mid - 1;elselow = mid ;}if (key > list[mid]){return mid+1;}else return mid;}


这种情况在最后会陷入low=mid的死循环。

原创粉丝点击