二分查找的秘密
2021/12/1 23:09:58
本文主要是介绍二分查找的秘密,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
left=0 right=length-1时,当进行left和right移动的时候一定要等于二分点+1或二分点-1 (不然,假设终止条件是left>right,当target=arr[lenth-1]的时候会死循环)
left=0 right=length时, 当进行left和right移动的时候就可以等于二分点
why?
如下情况,当right=left+1时,二分点一定是left,而当target=arr[right]时,进入死循环。所以在进行left移动和right移动的时候一定要注意+-1
而让right=length进行初始化可以有效避免这一个问题。因为在初始状态下,不可能有arr[right]=target,而在非初始状态下到达arr[right(也就是上一步的二分点)]=target的前提条件是在上一步比较中arr[二分点]>target,这显然是自相矛盾的。所以这样初始化可以不用在意在移动left和right时是否对二分点+-1。
arr[left]=target根本无需考虑。因为二分点总能落在left上从而顺利结束循环。
这篇关于二分查找的秘密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现