C语言 函数实现有序数组的二分法查找
程序员文章站
2022-03-13 18:21:05
...
int binary_search(int arr[] ,int x,int sz)//本质上arr是一个指针,仅存储数组第一个元素地址
{
//int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = sz - 1;
while (left<=right)
{
int mid = (left + right)/2;
if (x < arr[mid])
{
right = mid - 1;
}
else if (x > arr[mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
main()
{
int k = 7;
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int sz = sizeof(arr) / sizeof(arr[0]);
int ret = binary_search(arr,k,sz);//数组传到形参中仅传输数组第一个元素地址,避免空间浪费
if (ret != -1)
{
printf("下标是:%d\n", ret);
}
else
{
printf("找不到");
}
return 0;
}//有序二分查找
上一篇: 001 C语言题库之写一个函数 ,利用二分法查找有序数组中具体某个数
下一篇: C语言二分查找函数