应用折半查找方法在一个有序序列(该有序序列要求手动输入)中查找值为k的元素,若找到返回相应的下标
答案:1 悬赏:70 手机版
解决时间 2021-04-06 10:29
- 提问者网友:美人性情
- 2021-04-05 10:38
应用折半查找方法在一个有序序列(该有序序列要求手动输入)中查找值为k的元素,若找到返回相应的下标
最佳答案
- 五星知识达人网友:一叶十三刺
- 2021-04-05 11:35
#include
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]);
printf("请输入您要查找的数\n");
scanf("%d",&x);
z=search(a,10,x);
if(z)
printf("您要查找的数%d在数组中的位置是第%d个元素\n",x,z);
else
printf("您要查找的数%d不在数组中!\n");
}
int search(int a[],int n,int x)
{
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;
}
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]);
printf("请输入您要查找的数\n");
scanf("%d",&x);
z=search(a,10,x);
if(z)
printf("您要查找的数%d在数组中的位置是第%d个元素\n",x,z);
else
printf("您要查找的数%d不在数组中!\n");
}
int search(int a[],int n,int x)
{
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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯