• 向左向右 —折半查找(二分法)


    折半查找

    0   1  2  3  4   5    6     7    8   

    2  6  8  9  10  11  13  15  19  

    L          m            r

    L=0r=13m=(l+m)/2=6;

    判断arym】和输入n的关系

    如果等于找到了

    如果m>n  r=m-1

    如果m<n  l=m+1

    判断l>r是则无此项


    /** *@param 参数一:查找的数组 参数二:要找的值 * */ public static int dichotomia(int[] arry,int key) { int min = 0; int max = arry.length() - 1; int mid = (min + max)>>1;      //先选一般查看是否为查找值 while(arry[mid] != key) { if(arry[mid] < key){    //判断大小 改变最值来决定向上还是向下继续查找 min = mid +1;         }else { max = mid -1; } mid = (min + max)>>1;    //继续二分获取中间值 if(min > max || max < min){  //如果比最大值大 或比最小值小 说明没有 返回-1 return -1; } } return mid; }

      

    学如逆水行舟,不进则退。 博客园技术交流群 群 号:1073255314 (本群没人,刚刚建立 -_-!!! )
  • 相关阅读:
    Java类与对象
    读《大道至简——团队缺乏的不只是管理》有感
    java课后作业
    c++ 创建单项链表
    c++ 结构指针和双向链表
    c++ 自定义数据结构运用
    c++ 时间函数和结构化数据
    c++ 结束程序的几种方式
    c++ main函数的参数
    c++ 参数个数可变的函数
  • 原文地址:https://www.cnblogs.com/Mj-NaijAm/p/13601128.html
Copyright © 2020-2023  润新知