算法浅谈——人人皆知却很多人写不对的二分法

本文探讨了二分法在编程实现中常见的边界问题和结果判定,指出区间边界选择对二分法的影响,并详细解释了左闭右开区间的优势。通过分析三种a[mid]与目标值v的关系,解决了二分查找过程中区间更新的细节,强调了理解算法细节的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文始发于个人公众号:TechFlow

1

二分法可以说是鼎鼎大名,哪怕是没有学过编程的同学,也许说不上来二分法这个名字,但是对于其中的精髓应该都是有所了解的。不了解的同学也没关系,我一句话就能交代清楚:我们每次将一个集合一分为二,每次舍弃其中一半。

早在两千多年前,庄子就搞清楚了二分法的精髓,他说:一尺之棰,日取其半,万世不竭。从这个角度来说,二分法可能是这个世界上最古老的算法之一了。

二分法不仅古老,而且在计算机系统当中非常常见,许多系统当中都用到了二分法的思想。除此之外,在面试的时候,二分法的算法题也是常客。因为二分法本身不复杂,几乎人人都会,但是对二分法的使用能力却各有不同。出二分法的题,可以真实考察面试者的算法能力和编程功底。

不说比较困难的算法题想不出思路,就说最简单没有任何难度的纯二分,在面试的时候,出错的写出bug的也大有人在。

很多人会觉得奇怪,二分法这么简单的算法,真的有人写不出来吗?

还真的有,原因也很简单,恰恰就是二分法太简单了。

无论是在算法导论还是在一些其他的算法教材当中,关于二分法的描述都不多,详细的会有一些图例展示一下二分法的思想,简单的就用几句话描述一下原理,最后再展示一下代码,就完事了。读者在学的时候也是一样,看了一眼原理,哦,非

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值