二分查找 - 可以利用递归 也可以不用。
我使用的是迭代的方式来进行二分查找
唯一代码块
int binerySearch(int array[], int x, int length){
int l, h, mid;
l = 0;
h = length;
mid = (l + h) / 2;
while(l <= h){
if(array[mid] == x) return mid;
if(array[mid] > x) h = mid - 1;
if(array[mid] < x) l = mid + 1;
mid = (l + h) / 2;
}
return -1;
}
迭代方式中 使用高低判断是否超出查找范围。同时 使用二分查找的算法时,必须要对数据进行预处理,必须为已排列数据才可以使用二分查找。我的算法中要求使用升序排列方式!
测试代码
int main() {
int a[] = {1,2,3,4,5,6,7,8,9};
int x = binerySearch(a, 1, 8);
printf("%d", x);
}
测试结果
本人对Java很感兴趣,如果有需要,欢迎加群讨论:653460549