二分查找
来源:互联网 发布:怎么才能拥有淘宝水军 编辑:程序博客网 时间:2024/05/18 23:14
对排序序列进行查找,可以进行二分查找,时间复杂度为O(log(n)).
原理很简单,但是能正确无误的写出其代码,也并不容易。
主要需要注意的是:循环条件的判断和右端标记的下次迭代。
当left<=right; right=middle-1;
当left
int search(int array[], int n, int v){ int left, right, middle; left = 0, **right = n - 1;** while (**left <= right**) { middle = left + (right-left)/2; if (array[middle] > v) { **right = middle - 1**; } else if (array[middle] < v) { left = middle + 1; } else { return middle; } } return -1;}
版本二:
int search(int array[], int n, int v){ int left, right, middle; left = 0, **right = n;** while (**left < right**) { middle = left + (right-left)/2; if (array[middle] > v) { **right = middle;** } else if (array[middle] < v) { left = middle + 1; } else { return middle; } } return -1;}
0 0