找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3121|回复: 0
打印 上一主题 下一主题
收起左侧

c语言折半查找下标,数从大到小排列

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-22 02:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<stdio.h>//折半查找下标,数从大到小排列
  2. void main()
  3. {int i;
  4. int d;
  5. int m=0;//最大值坐标
  6. int n=14;//最小值坐标
  7. int k;
  8. int p;
  9. int o;
  10. int q=16;
  11. int a[15];//用到的变量是越来越多了
  12. printf("please input 15 number from big to small and desired number:\n");
  13. for(i=0;i<=14;i++)
  14. {
  15. scanf("%d",&a[i]);//先输入15个数
  16. }
  17. scanf("%d",&d);//再输入要查找的数
  18. for(k=1;k<=4;k++)
  19. {
  20. q=q/2;//每比较一次坐标变化量折半
  21. p=q-2;
  22.      if(d==a[(m+n)/2])
  23. {
  24.      printf("the coordinate is %d\n",(m+n)/2);
  25. o=1;
  26. }
  27.      else if(d>a[(m+n)/2])
  28. {
  29.            m=(m+n)/2-1-p;//这个6我将来是想换掉,因为没有可重复性
  30.            n=(m+n)/2-1;//将来这个l是要除以2的
  31. }
  32.           else
  33. {
  34.           m=(m+n)/2+1;
  35. n=(m+n)/2+1+p;
  36. }

  37. }
  38. if (o!=1)
  39. {printf(" do not exist\n");}
  40. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表