二分查找

Posted jmmm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找相关的知识,希望对你有一定的参考价值。

前置条件:必须是有序数组。
每次排除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));
    }
}

以上是关于二分查找的主要内容,如果未能解决你的问题,请参考以下文章

java 二分查找法

代码题(12)— 二分查找

二分查找代码

PHP实现二分查找算法(代码详解)

「算法笔记」一文摸秃二分查找

C语言二分查找