C语言:从键盘输入一个数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值
展开全部
#include <stdio.h>
int main()
{
int a[20]={16,15,18,1,12,57,10,9,38,7,6,5,4,32,2,1,,17,25,28,68};
int l=0,h=14,x,m;
printf("输入数字:");
scanf("%d",&x);
while(l<h)
{
m=(l+h)/2;
if(x==a[m]) break;
if(x>a[m])
h=m;
else
l=m;
if ((l==h) && x!=a[h]) {
printf("无此数");
return 0;
}
}
printf("是第%d个元素",m+1);
return 0;
}
int main()
{
int a[20]={16,15,18,1,12,57,10,9,38,7,6,5,4,32,2,1,,17,25,28,68};
int l=0,h=14,x,m;
printf("输入数字:");
scanf("%d",&x);
while(l<h)
{
m=(l+h)/2;
if(x==a[m]) break;
if(x>a[m])
h=m;
else
l=m;
if ((l==h) && x!=a[h]) {
printf("无此数");
return 0;
}
}
printf("是第%d个元素",m+1);
return 0;
}
展开全部
#include<stdio.h>
void main()
{
int a[20],x,i,start,end,f=0;
printf("input 20 numbers:\n");
for(i=0;i<20;i++) scanf("%d",&a[i]);
printf("please enter the number:\n");
scanf("%d",&x);
for(start=0,end=19;start<=end;)
{
i=start+(end-start)/2;
if (x==a[i])
{
printf("%d",i+1);
f=1;
getch();
return;
}
else if (x>a[i]) {end = i-1;f=1;}
else {start=i+1; f=1}
}
if(f=0) printf("No found");
}
void main()
{
int a[20],x,i,start,end,f=0;
printf("input 20 numbers:\n");
for(i=0;i<20;i++) scanf("%d",&a[i]);
printf("please enter the number:\n");
scanf("%d",&x);
for(start=0,end=19;start<=end;)
{
i=start+(end-start)/2;
if (x==a[i])
{
printf("%d",i+1);
f=1;
getch();
return;
}
else if (x>a[i]) {end = i-1;f=1;}
else {start=i+1; f=1}
}
if(f=0) printf("No found");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询