#include<stdio.h>
int main()
{
int i,j,a[20],k;
int first=0,last=20; //这边last的初始化没有限制;
printf( "请输入十个数:\n" );
for( i=0; i<10; i++ )
{
scanf("%d", &a[i]); //可由终端输入 也可初始化多少个数;
}
printf( "请输入你要找的数:\n" );
scanf( "%d",&j );
i = ( first+last )/2; //一开始便要将查找数的范围分成两部分;
while( j<last) //此判断便是用来判断是否输出所查的数 j;
{
if( a[i]> j) //相比较
{
last = i-1; //由后往前通过last--查找;
}
else
if( a[i]< j) //相比较
{
first = i+1; //由前往后通过first++查找;
}
else
break;
i = ( first+last )/2; //在循环中加入折半 可以起到抑制折半的效果;
}
printf("查找的数是:%d",j);
return 0;}
注 : 折半查找必须是查找按一定顺序输入