//2.写代码可以在整型有序数组中查找想要的数字,
//找到了返回下标,找不到返回-1.(折半查找)
#include <stdio.h>
#define N 9
int main()
{
//初始化下标值,如果没有新的下标则说明没找到
int sign=0;
//声明并初始化要找的数值
int n=0;
//声明一个有序数组
int arr[N]={1,2,3,4,5,6,7,8,9};
//初始化对半查找所需要的变量
int left=0;
int right=8;
int mid=(left+right)/2;
//输入要找的值
printf("请输入一个数\n");
scanf("%d",&n);
//开始二分查找
while(left<=right)
{
//二分查找也叫折半查找
mid=(left+right)/2;
if(n==arr[mid])
{
sign=mid;
break;
}
else if(n>arr[mid])
{
left=mid+1;
//如果此处写成left=mid;和下面也写成right=mid;
//则可能会造成死循环
//找不到所需要的值
}
else if(n<arr[mid])
{
right=mid-1;
}
}
if(sign)
printf("找到了,下标是%d\n",sign);
else
printf("没找到,%d\n",sign);
return 0;
}
12-21