int main()
{
//定义一个有序数组
int arr[] = { 1,2,3,4,5,6,7,8,9 };
// 定义要找的值
int num = 7;
//先求数组个数(数组一个除第一个)
int ge = (sizeof(arr) / sizeof(arr[0]));
// 定义数组第一个下标0
int first = 0;
// 定义最后一个下标(数组个数-1)
int zui = ge - 1;
while (first <= zui)//如果第一个小于最后一个则进入循环,
{
// 求中间元素头加尾/2
int mid = (first + zui) / 2;
// 跟要找的数进行对比用if else
if (arr[mid] > num)//如果中间值大于要找的值则后面的值-1
{
zui = mid - 1;
}
else if (arr[mid] < num)//如果中间值小于要找的值则前面的值+1
{
first = mid + 1;
}
else
{
printf("找到了下标是:%d\n", mid);
break;
}
}
if (first >= zui)//第一个大于最后一个则,没有找到
{
printf("没找到");
}
return 0;
}
在有序数组中找一个数
最新推荐文章于 2024-10-17 21:38:18 发布