| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 数据结构与算法 -> 算法分析:C语言实现分治算法之二分搜索(折半查找)(递归)与线性查找的比较 -> 正文阅读 |
|
|
[数据结构与算法]算法分析:C语言实现分治算法之二分搜索(折半查找)(递归)与线性查找的比较 |
|
?二分搜索的伪码:
?二分搜索的解题思路:
? ? ? ? 二分搜索的思路:对比查找元素K,如果刚刚好mid等于K则直接返回mid的位置,如果K大于mid,则把小于mid的数放弃掉,如果K小于mid?,则把大于mid的数放弃掉,相当于直接丢弃一半,一直丢弃,直到找到K等于mid。 ?递归代码实现:
结果实现:
线性查找 :
?????????我们可以想,明明可以用几行代码就可以实现一个有序数组的查找,可是为什么偏偏要弄得像二分搜索那样复杂呢?? ? ? ? ? 可以直接从“线性查找”的代码看出来,它是一个一个的对比,从0开始到想要搜索的数(即时间复杂度O(n)),这看起来不是比二分搜索更加简洁方便嘛? ? ? ? ?参考一些资料↓
? ? ? ? ?在《算法设计技巧与分析》沙特版中对二分搜索算法的时间复杂度分析为O(log n) ? ? ? ? 通过函数来对比一下y=n与y=log n的差别 ? ? ? ? 在0<x<=10之间,两个函数之间的函数值差距开始增大
?????????在0<x<=85之间,log n趋于一条直线,而n对应的函数值已经越来越高了
? ? ? ? 由上图可得,当n很大时,线性查找(O(n))所要耗费的时间远远要比二分搜索(O(logn))所耗费的时间要多! 所以二分搜索的重要性是可想而知的,也是必要的! |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/4 6:29:52- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |