话不多少先上代码
int binary_search(int arr[],int len,int e);//声明
int main() //程序入口,主函数,从这里开始执行
{
int i,e;
int arr[10];//定义数组存放元素
printf("请输入顺序表的十个数字:\n");
for(i=0;i<10;i++)//循环输入十个元素
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&arr[i]);
}
printf("请输入要查找的数:");
scanf("%d",&e);//输入要查找的数
int result = binary_search(arr,10,e);//返回值赋值给result
if(result==-1)//返回值判断
{
printf("不存在该元素!\n");
}
else
{
printf("存在该元素,在第%d个位置!\n",result+1);
}
}
int binary_search(int arr[],int len,int e)
{
int low = 0;//低下标
int high = len-1;//高下标
int mid;//中下标
while(low<=high)//条件判断表内有无元素
{
mid = (low+high)/2;//中间下标计算公式
if(arr[mid]>e)
{
high = mid-1;//中间值大于e则高下标减小
}
else if(arr[mid]<e)
{
low = mid+1;//中间值小于e则低下标增大
}
else
{
return mid;//如果mid==e则返回值
}
}
return -1;//表内无输入元素则返回-1
}
Xmind折半查找
运行结果