算法复杂性

1.如何描述算法的效率?

  一段代码的执行时间和速度受运行环境影响,所以不能用时间来描述一个算法的效率,我们用 “阶”,“阶” 不是描述大小 而是描述增长率(数据规模和时间的增长率).

  例如插入排序的最坏时间用O(n²) 表示,并不是说时间是O(n²) 而表示的是增长率是O(n²)

2.描述增长率的过程中忽略一些附加因素

  a.忽略低阶项,保留最高项

  b.忽略常系数

  c.n无限大

 

    

 

常用算法复杂度

 

排序法

最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一顶 O(n)

插入排序

O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)

  

posted on 2015-09-08 10:03  小刚的博客  阅读(214)  评论(0)    收藏  举报

导航