用户输入有序数组的长度、各元素和所要查找的元素,程序输出查找成功与否以及成功后元素所在的位置
#include<stdio.h>
void binary_search(int key,int a[],int n){
int low=0,high;
int mid=0,count=0,count1=0;
high=n-1;
while(low<high){//当查找范围不为0的时候执行以下循环体语句
count++;//count记录查找次数
mid=(low+high)/2;//求中间位置
if(key<a[mid]){
high=mid-1;//确定左字表范围;
}
else if(key>a[mid]){
low=mid+1;//确定右子表范围
}
else if(key==a[mid]){//当key等于中间值时查找成功
printf("查找成功!\n查找%d次 a[%d]=%d",count,mid,key);
//输出查找次数以及所查找元素在数组中的位置
count1++;//count1记录查找成功的次数
break;
}
}
if(count1==0){
printf("查找失败");
}
}
void main(){
int i,key,a[100],n;
printf("请输入有序数组的长度:\n");
scanf("%d",&n);
printf("请输入有序数组的各元素:\n");
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
printf("请输入要查找的元素:\n");
scanf("%d",&key);
binary_search(key,a,n);
}