浅谈:无处不在的二分(1)
2016-04-28 09:57
218 查看
二分这个词似乎在算法上看到时还会感到些许陌生,其实二分的思想早已融入在我们的生活中,大概是因为“偷懒”使人进步?
比如我们在翻词典找一个词的时候,有时我们不会去翻目录,而是随意地翻了一页(我们自认为最接近我们在寻找的答案),然后根据所翻的那一页就可以直接判断我们想要的答案是在这一页之前or之后,这样我们所搜索的范围就减少了一部分(如果每一次都取中值,则范围每一次都减少一半)。
反复如此,我们总是可以很快地找到我们想要的答案。这似乎不比我们去翻目录(索引)要慢吧?
但是,我们会发现一个问题,为什么单凭所翻的那一页就能判断答案在这一页的前面or后面呢?这是因为每一页每一个词都是按照字典序排列着的。所以在算法中使用二分查找时,所查找的范围必须是有序的。
此时回顾一下,是否觉得二分查找其实也挺简单的呢?
比如我们在翻词典找一个词的时候,有时我们不会去翻目录,而是随意地翻了一页(我们自认为最接近我们在寻找的答案),然后根据所翻的那一页就可以直接判断我们想要的答案是在这一页之前or之后,这样我们所搜索的范围就减少了一部分(如果每一次都取中值,则范围每一次都减少一半)。
反复如此,我们总是可以很快地找到我们想要的答案。这似乎不比我们去翻目录(索引)要慢吧?
但是,我们会发现一个问题,为什么单凭所翻的那一页就能判断答案在这一页的前面or后面呢?这是因为每一页每一个词都是按照字典序排列着的。所以在算法中使用二分查找时,所查找的范围必须是有序的。
此时回顾一下,是否觉得二分查找其实也挺简单的呢?
相关文章推荐
- apache对象池的使用
- js小技巧
- redis+cookies实现session机制(解决 手机浏览器不自动回传cookies导致session不可用问题)
- mysql的下载到安装使用
- 机器学习课堂笔记(十二)
- 学习整理——以太帧、ip帧、udp/tcp帧、http报文结构
- jbpm-6.3.0.Final-installer-full在Windows上的部署、数据库由H2切换为MySql、Linux上的部署全过程
- ssh org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; neste
- [BZOJ2882]2882: 工艺
- C语言链表的基础练习
- BigTable
- iOS开发 ☞ 应用间跳转
- 初始python
- Ubuntu系统操作快捷键
- 引用js文件
- mysql ab复制
- Sublime Text 3 绝对神器
- svc 报“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。“的HTTP 错误 404.3 – Not Found
- Handlebars 小技巧
- 网络营销给网站SEO优化带来的帮助有哪些?你知道吗