算法初体验 —二分查找

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([1356222333], 1))
# 结果: 0

貌似就是个函数嘛。


对了,学习算法,应当明白其使用场景及其优缺点,不然和咸鱼有什么区别。我们需要选择效率最高的算法来帮助我们完成任务,因此下次将会更新大O表示法,用以描述算法的运行时间。

以上是关于算法初体验 —二分查找的主要内容,如果未能解决你的问题,请参考以下文章

vs code初体验

Golang泛型编程初体验

弄懂分治系列:换个模型,二分查找还会用吗?

PHP实现二分查找算法(代码详解)

Kotlin初体验

「算法笔记」一文摸秃二分查找