算法初体验 —二分查找
Posted 星期五晚上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法初体验 —二分查找相关的知识,希望对你有一定的参考价值。
适逢新写完一个小APP项目的第一个版本,名字未起,也未上线之际,买来了数据结构与算法的入门书籍,听闻先学者,有人觉得难有人觉得还行,我也斗着胆子来试试,大不了就是算法入门到放弃呗...哈哈
今天学的是二分查找,学习过程就不说了,直接上总结吧,有类似志趣者欢迎来撩。
【总结】:
1、二分查找算法所要查找的列表需是一个有序列表
2、通常,若列表有n个元素,则使用二分查找最多只需要 log2 n (对数表示)次即可查到想要的元素
3、与普查的”傻“方法相比,列表内元素每多一倍,查找次数只需要多一次,其查找次数与元素个数呈现对数关系,元素越多,其优势越明显
以下是采用python方式实现的二分查找算法练习案例:
'''二分查找算法'''
def binary_search(list, real_num):
# 确定二分查找的查找边界
low = 0
high = len(list) - 1
# 使查找边界重合,则可得到最终符合条件值的下标
while low <= high:
# 取中位下标,向下取整
mid = (low + high) // 2
# 获取中位下标的值
input_num = list[mid]
if input_num == real_num:
# 返回真实值所在的位置下标
return mid
# 判断中位下标值与真实值的关系,不断修正查找边界的值在
# 直到最终定下确定的中位下标即为真实值所在下标
if input_num > real_num:
high = mid - 1
else:
low = mid + 1
return None
# 测试
print(binary_search([1, 3, 56, 222, 333], 1))
# 结果: 0
貌似就是个函数嘛。
对了,学习算法,应当明白其使用场景及其优缺点,不然和咸鱼有什么区别。我们需要选择效率最高的算法来帮助我们完成任务,因此下次将会更新大O表示法,用以描述算法的运行时间。
以上是关于算法初体验 —二分查找的主要内容,如果未能解决你的问题,请参考以下文章