int ttt=6;
int nb[ttt];
int i,ccc,hhh;
int vvv=0;
int aaa=-1;
int bbb=6;//定义所要用的定量
for(i=0;i<ttt;i++);
scanf("%d",&nb[i]);//挨个输入数组元素,但是必须按照大小输入
while(vvv<=bbb)
{if(hhh<nb[(vvv+bbb)/2])
{ bbb=(vvv+bbb)/2+1;
aaa=-1;}
if(hhh>nb[(vvv+bbb)/2]
{ vvv=(vvv+bbb)/2+1;
aaa=-1;}
if(hhh==vvv){
printf("在%d",nb[vvv]);
break;}
if(hhh==bbb){
printf("在%d",nb[bbb];
break;}
return -1;
}//进行二分法搜索,讲0和最后这个数组元素标记出来,利用他们的0.5也就是中间那个数组元素,用所搜索的元素和中间元素比较大小,如果大于就直接舍弃另外一半,从中间那个的下一个开始。
供参考:
#include<stdio.h>
int binary( int *a, int key, int n )//二分法进行搜索
{
int left = 0, right = n - 1, mid = 0;
mid = left + (right - left) / 2;
while( left < right && a[mid] != key )
{
if( a[mid] < key ) {
left = mid + 1;
} else if( a[mid] > key ) {
right = mid - 1;
}
mid = ( left + right ) / 2;
}
if( a[mid] == key )
return mid;
return -1;
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677};
int b = 677;
printf( "%d\n", binary( a, b, sizeof(a)/sizeof(a[0])));
return 0;
}