C语言——–在一个有顺序的数组中查找某个值n(二分法)
假设有一个数组int arr[] = { 1,2,3,4,5,6,7,8,9,10 };我们要找出其中数字7的下标。
#include<stdio.h>
int main()
{
//在一个有顺序的数组中查找某个值n
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = sizeof(arr) / sizeof(arr[0]);//求数组长度
int k = 7;//查找的特定值 7
int left = 0;//数组的第一个下标
int right = sz - 1;//数组的最后一个下标
while (left<=right)//循环条件 当left<=right
{
int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了数组下标为%d\n", mid);
break;
}
}
if (left > right) //当left的值大于right的值时,出现了交叉,找不到了
{
printf("找不到\n");
}
return 0;
}
结果
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/95611.html