学习算法知识的同时,梳理知识,也便于以后查找
tags:《算法图解》、
实现语言:Java、python3
好记性不如烂笔头
二分查找
时间复杂度:O(log n)
代码实现
一种实现方式:
缩小查找范围边界
python代码实现
def binary_search(list,item):
low = 0;
high = len(list)-1
#当范围缩小到只有一个元素时,退出
while low <= high:
#python会自动将mid向下圆整
mid = (low + high) / 2
p = list[mid]
if p == item:
return mid
else if p > mid:
high = mid - 1
else if p < mid:
low= mid + 1
return none #没找到
Java代码实现
public int binarySearch(long value){
//查找域边界
int left = o;
int right = elements;
int middle = 0;
while(true){
//Java取整
middle = (right + left)/2;
//基线条件
if(arr[middle] == value){
return middle;
}
//查找不到,也可以放到外面去
else if(left > right){
return -1;
}
else if(arr[middle] > value){
right = middle -1;
}
else if(arr[middle] < value){
left = middle + 1;
}
}
}
–END–