1.1 算法
1.1-1
现实生活中需要排序的例子:将学生按成绩从高到底排序。
1.1-2
除速度外,在真实环境中还可能使用油耗、机械效率、发电功率等有关效率的度量。
1.1-3
数据结构:栈。
优势:在顶部插入和删除数据很快;
局限:在除顶部外的其他位置操作数据速度较慢。
1.1-4
最短路径与旅行商问题的相似之处:都是为了求最短路径;
不同之处:最短路径是单程的,不需要回到出发点;而旅行商问题最终是要回到出发点的。
1.1-5
只有最佳解才行的现实生活问题:给定一些钱,去购买有固定价格的多种商品,要求购得的商品总数量最多。
近似最佳的一个解也足够好的问题:给定一张交通图,上面标记了\(n\)个路口和连接路口的道路,要求确定图中是否存在\(k(k\leq n)\)个路口,其中每对路口之间都有一条道路来连接。
1.2-1
在应用层需要算法内容的应用的一个例子:导航。
算法的功能:寻找路线、描绘地图、插入地址。
1.2-2
对\(n\leq6\),插入排序优于归并排序。
1.2-3
\(n\)的最小值为\(15\)时,运行时间为\(100n^2\)的一个算法在相同机器上快于运行时间为\(2^n\)的另一个算法。
思考题
1.1
1秒钟 | 1分钟 | 1小时 | 1天 | 1月 | 1年 | 1世纪 | |
$$\lg{n}$$ | $$10^{1000}$$ | $$10^{60000}$$ | $$10^{3600000}$$ | $$10^{86400000}$$ | $$10^{2.592e^9}$$ | $$10^{3.1536e^{10}}$$ | $$10^{3.1536e^{12}}$$ |
$$\sqrt{n}$$ | $$1000^2$$ | $$60000^2$$ | $$3600000^2$$ | $$86400000^2$$ | $$(2.592e^9)^2$$ | $$(3.1536e^{10})^2$$ | $$(3.1536e^{12})^2$$ |
$$n$$ | 1000 | 60000 | 3600000 | 86400000 | $$2.592e^9$$ | $$3.1536e^{10}$$ | $$3.1536e^{12}$$ |
$$n\lg{n}$$ | 386 | 14426 | 621399 | 12192874 | 305480836 | 3312548583 | 275655500637 |
$$n^2$$ | 31 | 244 | 1897 | 9295 | 50911 | 177583 | 1775837 |
$$n^3$$ | 10 | 39 | 153 | 442 | 1373 | 3159 | 14664 |
$$2^n$$ | 9 | 15 | 21 | 26 | 31 | 34 | 41 |
$$n!$$ | 6 | 8 | 9 | 11 | 12 | 13 | 15 |