c语言的二分法
c语言需要对数组内的内容进行查找,而二分法的速度是最快的。查找最多的次数是log2 n次,例如十个数字,那么查找最多次数为log2 10=3.7,大约是4次。
#include<stdio.h>
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9 };
int k = 7;
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)
{
right = mid - 1;
}
else if (arr[mid] <k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是%d\n", mid);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}
该代码中的sizeof()需要注意,一般情况来说sz=sizeof(arr)是能正常使用的,而在测试中会出现问题,如下:
可以看见会出现问题,而在改进代码后即可恢复正常:

本文探讨了在C语言中使用二分法进行数组内容查找的高效性,指出在最坏情况下查找次数不超过log2 n次。文章还提到了在实际应用中,使用sizeof()操作符可能遇到的问题,并暗示通过改进代码可以解决这个问题。

2722

被折叠的 条评论
为什么被折叠?



