#include<stdio.h>
/*
// arr 本质是一个指针
int binary_search(int arr[], int k,int sz)
{
// 算法的实现
// int sz = sizeof(arr)/sizeof(arr[0]); // 小标
int left = 0; // 左小标
int right = sz -1; // 右小标
while(left<=right) // 多次查找的条件
{
int mid = (left + right )/2; // 中间的下标
if(arr[mid] < k)
{
left = mid +1;
}
else if(arr[mid] > k)
{
right = mid -1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k =17;
int sz = sizeof(arr)/sizeof(arr[0]);
int ret = binary_search(arr,k,sz);
if(ret == -1)
{
printf("找不到了");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
return 0;
}
C语言 二分查找法 (优化)
最新推荐文章于 2024-07-19 15:45:46 发布