报批报建工程师:一个头疼的题目C语言

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/27 16:53:54
有一个这样的题目:
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
这个题我看了答案,好长的程序呀,有两页多纸了,太复杂了,有哪个高手能想出一种简便的程序吗?

有那么夸张么……????
两页多纸……!!!多大的纸哈?
我来写个吧,要说也挺简单的呀……
#include <stdio.h>
#define R 15
int main(void)
{
int a[R]={2,5,6,8,11,15,18,20,22,40,60,70,88,90,99};
int low,high,m,i,x;
printf("\nInput the number:__\b\b");
scanf("%d",&x);
low=0;
high=15;
while(low<=high)
{
m=(low+high)/2;
if(x==a[m]) break;
else if (x>a[m]) low=m+1;
else high=m-1;
}
if(low<=high)
printf("%d is found ,the position is %d",x,m); /*这里的m是从0算的要是从1开始算数组中元素就把m改成m+1*/
else
printf("%d is not found \n",x);
getch();
return 0;
}

哈 楼主真是会开玩笑
如果真是这样的话那两页纸可真有够小了
在谭浩强的书上就有这个算法

二分法查找是对顺序表的一种基本查找模式,代码也几乎是一样的,所以应该没有什么简便方法,你说代码很长,但实际上代码长但是很好懂的~

94你要200分,就给你做!

楼上说的对呀

这样的问题应该悬赏200分嘛```要不然谁会肯花时间给你解答呢?