算法
- 算法是用于求解的计算问题的工具
- 对于排序算法来说,哪个算法最好依赖于以下因素:
- 被排序的项数
- 这些项已被稍微排序的程度
- 关于项值的可能限制
- 计算机的体系结构
- 所使用的存储设备的类型(主存、磁盘或者磁带)
- 算法问题通常存在以下特征:
- 存在许多候选解,但绝大多数候选解都没有解决手头的问题。
- 存在实际应用。
- 分析算法的结果意味着预测算法需要的资源。
- 输入规模的最佳概念依赖于研究的问题。有的是输入中的项数;有的是二进制记号表示输入所需的总位数;有时候需要用两个数来表示输入规模,例如图中的顶点数和边数。
- 一个算法在特定输入上的运行时间是指之星的基本操作数或步数。
- 在研究算法的运行时间时,往往集中于只求最坏情况运行时间,理由如下:
- 一个算法的最坏情况运行时间给出了任何输入的运行时间的一个上界,知道了这个界,就能确保该算法绝不需要更长的时间;
- 对某些算法,最坏情况经常出现。例如数据库检索算法。
- “平均情况”往往与最坏情况大致一样差。
- 我们真正感兴趣的运行时间的增长率或增长量级。所以我们只考虑公式中最重要的项(例如an²),我们一般也忽略掉最重要项的常系数。
- 如果一个算法的最坏情况运行时间具有比另一个算法更低的增长量级,那么我们通常认为前者比后者更有效。
- 渐近记号Θ、Ο、o、Ω、ω详解(重新理解自CSDN):
转载于:https://my.oschina.net/u/4181775/blog/3085278