《算法图解》第一章学习
来源:互联网 发布:云计算公司大约市值 编辑:程序博客网 时间:2024/05/21 20:22
第一章
1.二分法查找
引入的例子就是本科时候经常玩的助兴游戏,猜数字1到100,其中一个人先确定一个数字,然后其他人来猜,根据先前确定的数字告诉小伙伴是大于了,还是小于了,然后慢慢往结果靠近
其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。
一般而言,对于包含n个元素的列表,用二分查找最多需要log2n步,而简单查找最多需要n步。
(讲的非常详细,易于理解)
2.运行时间
最多需要猜测的次数与列表长度相同,这被称为线性时间(linear time)。
关键的一句话,运行时间的增速不同
使用大O表示法,这个运行时间为O(n)。单位秒呢?没有——大O表示法指的并非以秒为单位的速度。大O表示法
让你能够比较操作数,它指出了算法运行时间的增速。
3.常用大O时间
O(logn),也叫对数时间,这样的算法包括二分查找。
O(n),也叫线性时间,这样的算法包括简单查找。
O(n*logn),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。
O(n2),这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。
O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法。
使用大O表示法给出下述各种情形的运行时间。
1.3 在电话簿中根据名字查找电话号码。
1.4 在电话簿中根据电话号码找人。(提示:你必须查找整个电话簿。)
1.5 阅读电话簿中每个人的电话号码。
1.6 阅读电话簿中姓名以A打头的人的电话号码。这个问题比较棘手,它涉及第4章的概
念。答案可能让你感到惊讶!
练习1.
使用大O表示法给出下述各种情形的运行时间。
1.3 在电话簿中根据名字查找电话号码。
1.4 在电话簿中根据电话号码找人。(提示:你必须查找整个电话簿。)
1.5 阅读电话簿中每个人的电话号码。
1.6 阅读电话簿中姓名以A打头的人的电话号码。这个问题比较棘手,它涉及第4章的概
念。答案可能让你感到惊讶!
解答:http://blog.csdn.net/weixin_38313518/article/details/78325412
一个旅行商要到不同的城市去,且要保证旅程最短,如果有5个城市,就有120种走法,6个城市就有720种算法
涉及n个城市时,需要执行n!(n的阶乘)次操作才能计算出结果。因此运行时间为O(n!),即阶乘时间。除非涉及的城市数很少,否则需要执行非常多的操作。如果涉及的城市数超过100,根本就不能在合理的时间内计算出结果——等你计算出结果,太阳都没了。
小结
二分查找的速度比简单查找快得多。
O(logn)比O(n)快。需要搜索的元素越多,前者比后者就快得越多。
算法运行时间并不以秒为单位。
算法运行时间是从其增速的角度度量的。
算法运行时间用大O表示法表示
- 《算法图解》第一章学习
- 算法学习笔记 第一章
- 算法学习第一章
- 《算法图解》学习笔记
- 算法学习第一章-----排序算法
- 《算法导论》学习笔记第一章
- 算法导论 学习笔记 第一章
- 图解HTTP 第一章 了解Web基网络基础 学习笔记
- Jfinal学习日志第一章-快速上手(详细图解)
- 数据结构与算法分析学习笔记---第一章
- 机器学习实战(第一章)---KNN算法
- 算法导论学习记录之第一章
- 学习《算法导论》第一章 插入排序 总结
- 【数据结构与算法分析】第一章学习总结
- java 数据结构与算法第一章学习
- 算法学习笔记之图解冒泡法
- 【排序算法】图解算法——用眼睛学习算法
- 【算法导论】学习笔记第一章:算法在计算中的作用
- C#中的委托和事件
- layer.open打开iframe页面的调用父页面方法及关闭
- 最大似然估计和最小二乘法
- 最牛逼的Linux性能分析工具网站
- Gas Station
- 《算法图解》第一章学习
- Gartner公布2018十大战略科技发展趋势,未来5年AI将无处不在
- SQL查询库、表存储容量大小
- 空结构体多大?
- 群晖Synology DSM6.1 使用国内docker镜像加速
- Linux 安装 Oracle11g R2 详细教程
- 行为识别阅读笔记(paper+code):Real-time Action Recognition with Enhanced Motion Vector CNNs
- layer父子页面交互
- 最小二乘法-一元回归初等数学证明