标题: c语言折半查找下标,数从大到小排列 [打印本页]

作者: liuda    时间: 2015-1-22 02:25
标题: c语言折半查找下标,数从大到小排列
  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. }
复制代码







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1