C语言二分查找
在一个有序数组中查找具体的某个数字n。编写int binsearch(int x, int v[], int n); 功能:在v[0]<=v[1]<=v[2]<= ….<=v[n-1]的数组中查找x.
二分查找简单的思想:找到中间位置(mid)的数字(a[mid]),将目标数字(target)与中间数字进行比较,若目标数字小于中间数字则该数字在左端,紧接将右端的标记数right更新为mid-1(将数组长度缩短一半),再进行查找,若目标数字大于该数字则意味着目标数字在中间数字的右侧,将左端标记数left更新为mid+1,继续进行查找,直到找到该数字。
// 在下列代码的函数中 num是数组的长度计算方法为:
sizeof(b) / sizeof(b[0])
//b为需要查找的数组
// 有序数组二分查找
int Bin_search(int a[],int num, int target) {
int left = 0;
int right = num- 1;
int mid = 0;
while (left <= right) {
mid = (left + right) / 2;
if (target < a[mid]) {
right = mid - 1;
}
else if (target > a[mid]) {
left = mid + 1;
}
else if (target = a[mid])
{
printf_s("该数在第%d位\n", mid+1);
return mid;
}
}
return -1;
}
写的不好还请各位见谅,不足之处还请指出,谢谢!