概念及其步骤:
1.二分查找又叫折半查找,
2.前提是有序列表有序表中,
3.取中间记录作为比较对象,若给定值与中间记录的关键码相等,则查找成功;
若给定值小于中间记录的关键码,则在中间记录的左半边继续查找;
若给定值大于中间记录的关键码,则在中间记录右半边区继续查找。
4.不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。
二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)。
python代码如下:
#coding=utf-8
#---二分查找算法
def binary_find(target, list):
start = 0
end= len(list) - 1
while (start <= end):
centre = (start + end) / 2
if list[centre] > target:
end = centre - 1
elif list[centre] < target:
start = centre + 1
else:
return centre
return -1
if __name__ == '__main__':
data_list = [1,3,5,7,9,11,13,15]
target = 5
res_index = binary_find(target, data_list)
print "下标为:",res_index