zoukankan      html  css  js  c++  java
  • 二分查找

    1、死循环实现

    View Code
     1 //二分法查找
     2 /********************算法描述***********************
     3 假设一个没有重复的序列
     4 1、确定小大边界,小边界初始为0,大边界初始为length,以及中间边界
     5 2、将查找的数字与小大中比较,如果刚好等于,则返回
     6 3、如果比中间边界的值小,则小边界不变,中间边界作为大边界
     7 4、否则中间边界作为小边界,大边界不变
     8 补充,如果大边界-大边界的差为1,则不需要继续比较了,返回没有找到
     9 5、循环到2 
    10 ***************************************************/
    11 int SearchByHalf(int array[],int length,int id)
    12 {
    13     int iMin,iMid,iMax;
    14     iMin = 0;
    15     iMax = length-1;
    16     while(1)
    17     {
    18         iMid = (iMax-iMin)/2+iMin;
    19         if(array[iMax] == id) return iMax;
    20         if(array[iMin] == id) return iMin;
    21         if(array[iMid] == id) return iMid;
    22         if(array[iMid] > id)
    23         {
    24             iMax = iMid;
    25         }
    26         else if(array[iMid] < id)
    27         {
    28             iMin = iMid;
    29         }
    30         if(iMax - iMin == 1) return -1;//没有找到
    31     }
    32 }
    33 
    34 int main()
    35 {
    36     int a[10] = {7,2,8,3,9,10,15,11,20,17};
    37     int index = SearchByHalf(a,sizeof(a)/sizeof(int),20);
    38     printf("%d\n",index);
    39     return 0;
    40 }


    2、递归实现

    待续!

  • 相关阅读:
    深入理解幂等性(转)
    Mysql数据库表结构设计准则
    nodejs以对象做对象的key导致value一直被覆盖
    数组常用方法
    css选择器总结
    CSS 选择器权重计算规则
    ElementUI select
    linux-sed命令
    vue 组件数据传递:
    vue视频: 自定义指令 && 拖拽 && 自定义键盘信息
  • 原文地址:https://www.cnblogs.com/jiese/p/2566520.html
Copyright © 2011-2022 走看看