2011年3月5日

《大话数据结构》第2章 算法基础 2.9 算法的时间复杂度

摘要: 2.9 算法的时间复杂度2.9.1算法时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。 这样用大写O()来体现算法时间复杂度的记法,我们称之为大O记法。 一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。 显然,由此算法时间复杂度的定义可知,我们的三个求和算法的时间复杂度分别 阅读全文

posted @ 2011-03-05 16:13 伍迷 阅读(7003) 评论(17) 推荐(7) 编辑

《大话数据结构》第2章 算法基础 2.8 函数的渐近增长

摘要: 2.8 函数的渐近增长我们现在来判断一下,两个算法A和B哪个更好。假设两个算法的输入规模都是n,算法A要做2n + 3次操作,你可以理解为先有一个n次的循环,执行完成后,再有一个n次循环,最后有三次赋值或运算,共2n + 3次操作。算法B要做3n + 1次操作。你觉得它们谁更快呢? 准确说来,答案是不一定的(如表2-8-1所示)。 当n = 1时,算法A效率不如算法B(次数比算法B要多一次)。而当n = 2时,两者效率相同;当n > 2时,算法A就开始优于算法B了,随着n的增加,算法A要越来越好过算法B了(执行的次数比B要少)。于是我们可以得出结论,算法A总体上要好过算法B。 此时我们给 阅读全文

posted @ 2011-03-05 15:24 伍迷 阅读(6632) 评论(18) 推荐(10) 编辑

导航