算法导论题解(一) 算法在计算机中的应用
文章目录
1 算法练习
1-1. 给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子.
- 排序: 淘宝购物价格排序、销量排序、信用排序, 学生单科成绩排序、总成绩排序, 搜索广告排序等。
- 凸壳: 计算点集的直径。
1-2. 除了速度外,真实环境中还可能使用哪些其他有关效率的度量?
- 内存效率
- 编码效率
- 算法的稳定度
1-3. 选择一种你已知的数据结构,并讨论其优势和局限性。 - 顺序表
- 优势: 存取速度高效,通过下标来直接存储
- 缺点: 插入和删除比较慢, 不可以增加顺序表的长度
- 链表
- 优点: 插入和删除速度快
- 缺点: 查找速度慢
1-4. 前面给出的最短路径与旅行商问题有哪些相似之处,又有哪些不同?
- 相似处: 都是寻找最短路径
- 不同处: 旅行商问题限制更多
1-5. 提供一个现实生活的问题,哪些只有最佳解,并举例。哪些有近似最佳解? - 有最佳解: 寻找两个数的最大公约数(GCD)
- 近似最佳解: 求微分方程的解
2 作为一种技术的算法的练习
2-1. 给出在应用层需要算法的案例并讨论涉及算法的功能。
2-2. 假设我们正比较插入排序与归并排序在相同机器上的实现。对规模为n的输入,插入排序运行8n2步, 而归并排序运行64nlgn步,问对哪些n值插入排序优于归并排序?
2-3. n的最小值为何值时,运算时间为100n2 的一个算法在相同机器快于运行时间为2n的另一个算法.
3. 思考题
1-1. (运行时间的比较) 假设求解问题的算法需要f(n)毫秒,对下表中的每个函f(n)和时间t,确定可以在时间t内求解的问题的最大规模n.