什么是算法?
算法是为为求解一个问题需要遵循的,被清楚地指定的简单指令的集合 —《数据结构与算法分析》
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。—百度百科
对于一个问题,一旦我们决定了适用于解决它的算法,那么最重要的一步是确定该算法需要消耗多要资源,最常见的资源是时间资源和空间资源。
如何估算算法所需的资源?让我们先从某些数学定义开始。
定义:如果存在正常数 c 和 n 使得当 N ≥ \geq ≥ n 时 T(N) ≤ \leq ≤ cf(N),则记为 T (N) = O( f(N) )。
定义:如果存在正常数 c 和 n 使得当 N ≥ \geq ≥ n 时 T(N) ≥ \geq ≥ cf(N),则记为 T (N) = Ω \Omega Ω (f(N)) 。
这些定义的目的是在函数之间建立相对的关系。给定两个函数,通常存在一些点,在这些点上一个函数的值小于另一个函数的值。但是类似这样的关系是没有意义的。从上面的两个定义也可以看出,我们关心的是当n无限增长是函数的表现,其实我们是在关系两个函数的增长率。第一个定义即T(N)的增长率小于f(N)的增长率。第二定义即T(N)的增长率大于f(N)的增长率。我们在比较两个算法的效率的时候,一般是考虑当数据的集合无限增大时,算法的表现,因为在数据集合小的时候,两个算法的效率差距不会特别大,即使有差距,也是处于可以被接受的程度。