首页 > 编程语言 > 详细

排序算法的时间复杂度

时间:2019-12-25 14:11:29      阅读:75      评论:0      收藏:0      [点我收藏+]

计算时间复杂度方法步骤:

用1代替所有的加法常数 

只保留最高阶级

去除最高阶级的系数

列:T(n) = 6n^2+7n+5  =>  T(n) = 6n^2+7n+1  =>  T(n) = 6n^2  =>  T(n) = n^2  =>  O(n^2)

常见的时间复杂度由小到大

常数阶 O(1):没有循环等复杂结构

对数阶 O(log2n):循环中每次×2,直到得出的数满足条件 也就是2的X次方等于n

线性阶 O(n) :循环中依次递增

线性对数阶 O(nlog2n):对数阶循环n遍

平方阶 O(n^2):双层循环都循环n遍

立次方阶 O(n^3):三层循环都循环n遍

k次方阶 O(n^k):k层循环都循环n遍

指数阶 O(2^n)

各个算法的平均复杂度(一般只讨论最坏情况)

排序法 平均时间 最差情形 稳定度 额外空间 备注
冒泡 O(n^2) O(n^2) 稳定 O(1) n小时较好
选择 O(n^2) O(n^2) 不稳定 O(1) n小时较好
插入 O(n^2) O(n^2) 稳定 O(1) 大部分已排序时较好
基数 O(logRB) O(logRB) 稳定 O(1)

B是真数(0-9)

R是基数(个十百)

Shell O(nlogn) O(n^s) 1<s<2 不稳定 O(1) s是所选分组
快速 O(nlogn) O(n^2) 不稳定 O(nlogn) n大时较好
归并 O(nlogn) O(nlogn) 稳定 O(1) n大时较好
O(nlogn) O(nlogn) 不稳定 O(1) n大时较好

排序算法的时间复杂度

原文:https://www.cnblogs.com/bingbug/p/12096090.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!