【python/C++】【算法】【二分的应用】

本文探讨了二分查找算法的基本原理及其在信息学竞赛中的应用。通过对比顺序查找,强调了二分查找在效率上的优势。文章提供了两个练习题目,分别展示了如何运用二分查找解决实际问题,包括在一个单调不减的序列中查找特定数值的索引,以及寻找最小正整数x,使其平方值达到或超过特定位数。通过对解题思路的分析,突出了二分思想在解决复杂问题时的灵活性和实用性。
摘要由CSDN通过智能技术生成

二分是我们再熟悉不过的字眼了.计算机科学由于其特殊性更是与“2”结下了不解之缘.
尽管二分思想本身很简单,但它的扩展性之强、应用面之广,仍然很有研究的价值。我们从最简单的二分查找开始逐步探究二分思想在信息学竞赛中的应用.

二分查找,也叫折半查找,是一种适用于顺序存储结构的查找方法。它是一种效率较高的查找方法,时间复杂度为 O(lgn),但它仅能用于有序表中。也就是说,表中的元素需按关键字大小有序排列。

二分查找用左右两个指针来标注查找范围。程序开始时,查找范围是整个线性表,左指针指向第一个元素,右指针指向最后一个元素;每一次循环过后,查找范围都缩小为原先的一半,直到左右指针重叠或者左指针处于右指针的右侧。因为每次缩小一半的范围,所以可以得出二分查找的时间复杂度为 O(lgn)。

我们以图 1 中的有序数组为例进行二分查找。格子中的数是数组的每个位置上存储的数据,格子下方的数是下标。

在这里插入图片描述
 首先看一下二分查找与顺序查找的对比,可以看出 binary search 在查找数字 37 时只需3次,而 sequential search 查找37时需要11次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值