目录
1.1-1 给出现实生活中需要排序的一个例子或现实生活中需要凸壳的一个例子。
1.1-2 除速度外,真实环境中还可能使用哪些其他有关效率的量度?
1.1-5 提供一个现实生活的问题,其中只有最佳解才行。再提供一个问题,其中近似最佳解也足够好。
1.2-1 给出在应用层需要算法内容的应用的一个例子,并讨论涉及的算法的功能。
1.2-2 比较插入排序和归并排序在相同机器上的实现,对规模为n的输入,插入排序共运行 步,而归并排序共运行了 步。对于哪些 值,插入排序的效率优于归并排序?
1.2-3 n的最小值为何值时,运行时间为100n^2的一个算法在相同机器上快于运行时间为2^n的另一个算法?
1 算法的概念
- 算法是任何良定义的计算过程。包含一组输入、一组输出以及计算方式。
- 硬件设备的性能瓶颈催生了各种算法的设计和应用。因为算法诞生的直接目的,就是在有限的计算资源上解决具体的实际问题。
【练习题 1】
1.1-1 给出现实生活中需要排序的一个例子或现实生活中需要凸壳的一个例子。
注:凸壳,给出平面上 n 个点,这些点的凸壳就是包含这些点的最小凸多边形。
- 排序:点外卖好评优先,距离优先等。
- 凸壳:模式识别,3D打印。
1.1-2 除速度外,真实环境中还可能使用哪些其他有关效率的量度?
- 并发率(QPS、IOPS等),网络传输速率。
1.1-3 选择一种你已知的数据结构,讨论其优势和缺陷。
- 线性表:存储简单序列。顺序表可利存取,链表可利增删。
- 哈希表:存储键值对。
- 树型结构:具有明确层级关系。可实现多种算法。
- 图型结构:存储复杂多对多关系。
1.1-4 最短路径与旅行商问题有哪些异同?
- 最短路径:给定一系列点和各点之间的距离,求解某两个点之间的最短路径。
- 旅行商问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。
1.1-5 提供一个现实生活的问题,其中只有最佳解才行。再提供一个问题,其中近似最佳解也足够好。
- 只有一个最佳解的例子:寻找两个整数的最大公约数。
- 次优解也可以:很简单,求二元一次方程的解。
1.2-1 给出在应用层需要算法内容的应用的一个例子,并讨论涉及的算法的功能。
- 分布式场景下的负载均衡算法、分布式存储中的分布式ID生成算法等等。
1.2-2 比较插入排序和归并排序在相同机器上的实现,对规模为n的输入,插入排序共运行 步,而归并排序共运行了 步。对于哪些 值,插入排序的效率优于归并排序?
- 可以令:,能够解得:
1.2-3 n的最小值为何值时,运行时间为100n^2的一个算法在相同机器上快于运行时间为2^n的另一个算法?
- 可以令:,能够解得: