条件
一个有序数组
步骤
1.确定范围的左右下标,left,right.
注:若无法确定right的大小,则可用
元素的个数 = sizeof(arr) / sizeof(arr[0])
right=元素的个数 - 1;
2.根据left和right,确定中间元素下标mid.
3.根据mid锁定的元素,和查找的元素比较
确定新的查找范围,left和right.
代码展示
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int left = 0;
int right,mid;
int a[10] = {
0 };
int i = 0;
int n = 0;
for (i = 0; i < 10; i++)
{
a[i] = i + 1;//给数组进行赋值
}
scanf("%d", &n);//需要查找的数
;
int flag = 0;
right== sizeof(arr) / sizeof(arr[0])-1;
while (left <=right)
{
mid = (right + left) / 2;
if (a[mid] == n)
{
printf("找到了下标是:%d", mid);
flag = 1;
break;
}
else if (a[mid] > n)
right = mid - 1;
else if (a[mid] < n)
left = mid + 1;
}
if (flag == 0)
printf("找不到");
return 0;
}