二分查找
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));
}
}
以上是关于二分查找的主要内容,如果未能解决你的问题,请参考以下文章