永发信息网

有15个数按由大到小排列,输入一个数,运用折半查找法找出该数是第几个数。

答案:1  悬赏:40  手机版
解决时间 2021-02-23 15:06
  • 提问者网友:孤凫
  • 2021-02-22 14:33
有15个数按由大到小排列,输入一个数,运用折半查找法找出该数是第几个数。
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-02-22 15:03
您好!很高兴为您解答。

程序已修改:

#include
#define N 15
void main()
{
int i,number,top,bott,mid,loca,a[N],flag=1,sign;
char c;
printf("由大到小输入15个数 :\n");
for(i=0;i{
scanf("%d",&a[0]);
i++;
while(i!=-1&&i{
scanf("%d",&a[i]);
if(a[i]i++;
else
{printf("输入有误,请重新输入:\n");
i=-1;}
}
}
printf("\n");
for(i=0;iprintf("%4d",a[i]);
printf("\n");
while(flag)
{
printf("寻找:");
scanf("%d",&number);
sign=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((!sign)&&(top<=bott))
{
mid=(bott+top)/2;
if(number==a[mid])
{
loca=mid;
printf("找到%d,它是第%d个数\n",number,loca+1);
sign=1;
}
else if(number>a[mid])
bott=mid-1;
else
top=mid+1;
}
if(!sign||loca==-1)
printf("无此数\n");
printf("如继续寻找,请输入数字;否则按n/N");
scanf("%c",&c);
if(c=='N'||c=='n')
flag=0;
}
}

望采纳~如您还有不解,欢迎追问~
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯