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;
}
结果