常见排序算法的时间复杂度

1、数组中插入元素的时间复杂度:

最好最坏平均
数组中插入元素O(1)
每次都在数组的末尾插入;
O(n)
每次都在数组的头部插入;

2、常见排序算法的时间复杂度

假设数据量为n。

~最好最坏平均
基本排序冒泡(无标志位)O(n^2)O(n^2)O(n^2)
冒泡(有标志位)O(1)
说明:已有序,只需1次;
O(n^2)
说明:逆序,标志位无效。同上
O(n^2)
说明:以有序度作为测量。最好时,有序度为n,逆序度为n(n-1)/2;最差时相反;所以平均是n(n-1)/4;
插入O(n)
说明:已有序,只需比较n次,无需插入;
O(n^2)
说明:逆序,比较n次,插入n次,时间复杂度为O(n^2);
因为:数组插入的最坏时间复杂度为O(n);
O(n^2)
说明:比较n次不可变,插入的平均时间复杂度:O(n),所以总的平均时间复杂度为O(n^2);
选择O(n^2)
说明:比较n次,查找最小元素n次,交换为常量 3;
O(n^2)
说明:同最好;
O(n^2)
递归排序归并O(nlogn)
说明:递归的时间复杂度推算公式见原文。
merge的时间复杂度为O(n)(实际应该是2n);
O(nlogn)
同左
O(nlogn)
同左
快速O(nlogn)
说明:递归的时间复杂度推算公式见原文。
获取分区点的时间复杂度为O(n)。遍历整个数组,然后交换元素。
O(n^2)
特别极端的情况。
O(nlogn)
线性排序O(n)<
说明:实际为O(n*log(n/m))
n为数据总个数,m个桶。
O(nlogn)
只有一个桶的情况,分析见原文和右边。
暂无
计数O(n)
就是桶排序中m==n的情况。
同左暂无
基数O(n)
每位使用桶排序或者计数排序,然后位数是常数,所以时间复杂度可以为O(n)。
见桶排序和计数排序

参考:

  1. 排序算法之 冒泡排序 及其时间复杂度和空间复杂度 - YuZhiHui_No1的专栏 - CSDN博客 https://blog.csdn.net/YuZhiHui_No1/article/details/44339711
  2. 计数排序、基数排序和桶排序 - 简书 https://www.jianshu.com/p/ff1797625d66(注:桶排序的时间复杂度分析很不错)
  3. 线性时间排序:计数排序、基数排序、桶排序 - mmdnxh的博客 - CSDN博客 https://blog.csdn.net/qq_28267025/article/details/78149070 (注:包含代码实现,可以参考)

转载于:https://www.cnblogs.com/buwuliao/p/10429260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值