一道c语言题,实在不知道错在哪了。求教

neversaynever1 2014-05-08 04:39:18
有一组19个数的有序数列,数列元素自动生成,使用折半查找法查找某个数是否


[
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[19],mid,top=0,bot=18,x;
printf("请输入要查找的元素:");
scanf("%d",&x);
for(i=0;i<19;i++)
{
a[i]=rand()%101;
printf("%d|t",a[i]);


}
printf("|n");
while(top<=bot)
{
mid=(top+bot)/2;
if(x==a[mid])
{
printf("成功找到元素a[%d]=%d\n",mid,x);
exit(0);


}
else if(x>a[mid])
top=mid+1;
else
bot=mid-1;
}
printf("没有找到该元素!\n");
return 0;
}
...全文
201 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
带码君 2014-05-08
  • 打赏
  • 举报
回复
引用 7 楼 neversaynever1 的回复:
a[i] += a[i-1]; 是神魔意思
a[i]=a[i]+a[i-1]; 把随机出的数加上次随机的数当成新的随机数,这样数组就是有序的
hjl0508 2014-05-08
  • 打赏
  • 举报
回复
引用 7 楼 neversaynever1 的回复:
a[i] += a[i-1]; 是神魔意思
这个意思是后一个数是前面所有数的和这样后面的数肯定比前面数大,就有序了 用折半法得先排序,你可以先看看冒泡排序,这个比较简单
neversaynever1 2014-05-08
  • 打赏
  • 举报
回复
a[i] += a[i-1]; 是神魔意思
FancyMouse 2014-05-08
  • 打赏
  • 举报
回复
引用 2 楼 neversaynever1 的回复:
那怎莫弄?还要排序摸。排序还没学会
a[i] = rand()%101; if(i > 0) a[i] += a[i-1]; 这就有序了。
neversaynever1 2014-05-08
  • 打赏
  • 举报
回复
那个大婶给改改
qwer_boo 2014-05-08
  • 打赏
  • 举报
回复
典型的集中排序得先熟悉,冒泡,选择和插入等。
图灵狗 2014-05-08
  • 打赏
  • 举报
回复
就是查找之前先排序。
引用 2 楼 neversaynever1 的回复:
那怎莫弄?还要排序摸。排序还没学会
neversaynever1 2014-05-08
  • 打赏
  • 举报
回复
那怎莫弄?还要排序摸。排序还没学会
falloutmx 2014-05-08
  • 打赏
  • 举报
回复
折半查找法的前提是,你的数据是按升序或者降序排列的。而你rand出来的可都是随机数啊

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧