应用折半查找方法在一个有序序列(该有序序列要求手动输入)中查找值为k的元素,若找到返回相应的下标

应用折半查找方法在一个有序序列(该有序序列要求手动输入)中查找值为k的元素,若找到返回相应的下标否则返回0。(要求用函数实现)C语言... 应用折半查找方法在一个有序序列(该有序序列要求手动输入)中查找值为k的元素,若找到返回相应的下标否则返回0。(要求用函数实现)C语言 展开
 我来答
陈毛晨
推荐于2018-06-29 · 超过22用户采纳过TA的回答
知道答主
回答量:106
采纳率:57%
帮助的人:22.7万
展开全部
#include<stdio.h>
int search(int a[],int n,int x);/*对调用的函数进行声明*/
void main()
{
int i,x,z; /*对变量进行定义*/
int a[10];
printf("请输入10个有序的数!\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); /*接收10个有序的数赋值给数组a*/
printf("请输入您要查找的数\n");
scanf("%d",&x); /*接收要查找的关键字并赋值给x*/
z=search(a,10,x); /*调用函数search()*/
if(z)
printf("您要查找的数%d在数组中的位置是第%d个元素\n",x,z);
else
printf("您要查找的数%d不在数组中!\n");
}
int search(int a[],int n,int x) /*被调函数search()*/
{
int low,mid,high;/*定义变量*/
low=0; /*给变量赋初值*/
high=n-1;
while(low<=high) /*折半查找*/
{
mid=(low+high)/2;
if(a[mid]==x)
return mid+1;
else if(a[mid]>x)
high=mid-1;
else low=mid+1;
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式