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;
}//有序二分查找
C语言 函数实现有序数组的二分法查找
最新推荐文章于 2023-02-09 22:52:59 发布