写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
源码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int num = 7;
scanf("%d", &num);
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int i;
int left = 0;
int right = sizeof(a) / sizeof(a[0]) - 1;//求最后的一个数的下标
while (left <= right)
{
//i为中间的数
i = (left + right) / 2;
if (a[i] > num)
{
right = i - 1;
}
else if (a[i] < num)
{
left = i + 1;
}
else
break;
}
if (left <= right)
{
printf("找到了下标为%d\n", i);
}
else
printf("找不到!");
system("pause");
return 0;
}
运行结果:
找到
没找到: