当前位置:   article > 正文

二分法查找_二分法找1到50最多多少次

二分法找1到50最多多少次

二分查找是一种算法,其输入是一个有序的元素列表,而且列表必须是有序的。算法原理就是每次获取列表中间元素进行比较,每次排除一半的元素。
比如100个元素使用二分查找是:
100—50—25—13—7—4—2—1 只需要查找7次
而使用简单查找时候:
1–2–3–4……96–97–98–99-100 需要查找100次
注:算法都是按照最差情况计算
看看二分法的java代码:

 /**
     * @param list 查找集合
     * @param item 查找目标
     * @return 是否查找成功,-1为未查到;其他值为查找成功列表位置
     */
    public static int isInclude(Integer[] list, int item) {
        int low = 0;
        int high = list.length - 1;
        int time = 0;
        while (low <= high) {
            time = time+1;
            System.out.print("次数="+time);
            //整数类型默认取下整
            //中间位置 = (左边界+右边界)/2
            int mid = (low + high) / 2;
            int guess = list[mid];

            if(guess == item){
                //找到元素
                return mid;
            }
            if(guess > item){
                //数字比目标大了
                high = mid - 1;
            }else {
                low = mid + 1;
            }
        }
        return -1;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

算法规则:二分法查找会每次排除一半的元素,直到找到最后一个。比如:8–>4–>2–>1需要查找3次,16–>8–>4–>2–>1需要查找4次,依次类推发现,二分法查找的n个元素的列表,最多需要log2n步(n相对于2的对数,不为整数采用进一法),而简单查找最多需要n步。


算法时间:大O表示法,指算法在最糟糕的情况下所需要的步数
O(log2n):二分法查找 对数时间
O(n):简单查找 线性时间
O(n * log2 n):快速排序
O(n ^2 ): 选择排序
O(n!):旅行商问题 阶乘时间

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/624452
推荐阅读
相关标签
  

闽ICP备14008679号