码迷,mamicode.com
首页 > 其他好文 > 详细

二分查找

时间:2019-03-20 01:15:36      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:print   lse   ESS   public   system   []   代码   one   str   

前置条件:必须是有序数组。
每次排除1/2,直到最后剩下一个。
一般而言,对于包含n个元素的列表,用二分查找最多需要 log2n 步。

python代码:
def binary_serch(list,item):
    low = 0
    high = len(list)-1
    while low<=high:
        mid = (low+high)/2
        guess = list[mid]
        if guess == item:
            return mid
        if guess > item:
            high = mid - 1
        else:
            low = mid + 1
    return None

my_list = [1,3,5,7,9]
print binary_serch(my_list,3)
print binary_serch(my_list,-1)
java代码:
package demo;
import java.util.List;

/**
 * Created by Main on 2019/3/19.
 */
public class BinarySerch {

    public static int binarySerch(int[] array,int item){
        int low = 0;
        int high = array.length - 1;
        while (low<=high){
            int mid = (low+high)/2;
            int guess = array[mid];
            if(guess == item){
                return mid;
            }
            if(guess > item){
                high = mid - 1;
            }else {
                low = mid + 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] array = new int[]{1,3,5,7,9};
        System.out.println(binarySerch(array,3));
    }
}

二分查找

标签:print   lse   ESS   public   system   []   代码   one   str   

原文地址:https://www.cnblogs.com/Jmmm/p/10562342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!