是时候开始介绍算法的时间复杂度了,不过在这开始之前,我们需要了解一些额外的知识,那就是函数的渐近增长.先来说说它的概念:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,就说f(n)的增长渐近快于g(n).

      这里不详细说这个概念,想要了解的朋友们可以去找找数学书,我数学学得不太好,所以,呵呵.....再这里我们需要知道的是通过数学中的这么一个概念,我们能得出一个结论:判断一个算法的效率时,函数中的常数和其他次项常常可以忽略,而更应关注主项(即最高阶项)的阶数.

      接下来我们切入正题.那么,什么是算法的时间复杂度呢?简而言之,就是算法执行时间的增长率.它随着问题规模的n越大,会与问题规模n的某个函数的增长率相同.

      习惯上,我们会用推导大O阶的方法来比较时间的复杂度:

      1,用常数1取代运行时间中的所有加法常数

      2,在修改后的运行次数函数中,只保留最高阶项

      3,如果最高阶项存在且不是1,则去除与这个项相乘的常数.

      其中,常见的有常数阶O(1),线性阶O(n),对数阶O(logn),平方阶O(n的平方)

      当然,有时间复杂度就会有空间复杂度,不过这个问题我们不去讨论。

      接下来,我们对这一章作个总结:

      这一章主要讲解的还是算法的基本概念,包括算法的定义,特性,设计要求,度量方法和时间复杂度的判断.

posted on 2011-08-31 14:02  Jeallyn  阅读(204)  评论(0编辑  收藏  举报