二分法查找(对有序的数列才可以使用)
//二分法查找必须是对有序的数列
#include<stdio.h>
#define n 20
int main()
{
int a[n]={2,3,5,7,8,11,13,16,17,23,25,31,34,37,38,40,42,47,48,50} ; //定义区间内有十个整数
int x,h,l,m; //x为要输入的数字,h表示最大的位数,l表示最小的位数,m表示中间位的位数
scanf("%d",&x);
h=n-1;
l=0;
m=(h+l)/2;
while(a[m]!=x&&l<h)
{
if(x>a[m])
l=m+1;
else
h=m-1;
m=(h+l)/2;
}
if(x==a[m])
printf("FOUND %d %d\n",x,m);
else
printf("NOT FOUND!\n");
return 0;
}