C语言题:有15个数,乱序的,存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素的值。
C语言题:有15个数,乱序的,存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素的值。若果该数不在数组中,则打印出“无此数”用两种方法做,一种是折半查找法,还...
C语言题:有15个数,乱序的,存放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素的值。若果该数不在数组中,则打印出“无此数”
用两种方法做,一种是折半查找法,还有一种就用常规的方法。 展开
用两种方法做,一种是折半查找法,还有一种就用常规的方法。 展开
2个回答
推荐于2016-01-05 · 知道合伙人数码行家
关注
展开全部
#include <stdio.h>
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i,left=0,right=14,flag=0,d,mid;
printf("输入数值:");
scanf("%d",&d);
if(d < a[14]||d >a[0])
{ printf("\nchon gxin:");
scanf("%d",&d);}
for(i=1;i <5;i++) //16个最多比较4次
{
mid=(left+right)/2;
if(d==a[mid])
{
printf("第 %d 个.\n",mid);
flag=1;break;
}
else if(d>a[mid])
right=mid-1;
else left=mid+1;
}
if(flag==0) printf("无效.\n");
}
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int i,left=0,right=14,flag=0,d,mid;
printf("输入数值:");
scanf("%d",&d);
if(d < a[14]||d >a[0])
{ printf("\nchon gxin:");
scanf("%d",&d);}
for(i=1;i <5;i++) //16个最多比较4次
{
mid=(left+right)/2;
if(d==a[mid])
{
printf("第 %d 个.\n",mid);
flag=1;break;
}
else if(d>a[mid])
right=mid-1;
else left=mid+1;
}
if(flag==0) printf("无效.\n");
}
更多追问追答
追问
大神还有种方法呢?
一会采纳
大神
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |