原理
折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。
Python实现
# -*-coding:utf-8 -*-
#Young
#CreateOn:21:21/7/22/2015
#Content: Bin Search
def BinSearch(array,num,goalNum):
low = 0
high = num-1
while low<=high:
middle = (low+high)/2
if array[middle] == goalNum:
return middle
elif goalNum > array[middle]:
low = middle + 1
elif goalNum < array[middle]:
high = middle -1
if __name__ == '__main__':
array = [1,2,3,4,5,6,7,8]
goal = 5
num = len(array)
print BinSearch(array,num,goal)
讨论
二分法使用之前还需排序,耗费时间还是线性时间?
解释:摘自《算法问题实战策略》
排序和搜索属于两个过程。

被折叠的 条评论
为什么被折叠?



