排序算法时间复杂度

本文介绍了八种常见的排序算法及其时间复杂度。包括直接插入排序、Shell排序、直接选择排序、堆排序、冒泡排序、快速排序、归并排序和基数排序。通过理解这些算法的工作原理,有助于优化代码效率。
摘要由CSDN通过智能技术生成
类别排序法时间复杂度空间复杂度稳定性备注
平均最差最好
插入排序直接插入O(n^2)O(n^2)O(n)O(1)稳定 
Shell O(n^[1~2])O(n^1.25)?O(1)不稳定 
选择排序直接选择O(n^2)O(n^2)O(n^2)O(1)不稳定 
堆排序O(nlogn)O(nlogn)O(nlogn)O(1)不稳定 
交换排序冒泡排序O(n^2)O(n^2)O(n)O(1)稳定 
快速排序O(nlogn)O(n^2)O(nlogn)O(logn)~O(n)不稳定 
归并排序O(nlogn)O(nlogn)O(nlogn)O(n)稳定 
基数排序O(d(n+k))O(d(n+k))O(d(n+k))O(n+k) 稳定 

 

 

 

 

 

 

 

 

 

 

1 直接插入:按次序将下一个元素从后向前比较,插入到第一个有序位置。

2 shell sort:先分组,每组下标距离相等,进行组内直接插入排序。重复上一步骤,每次距离(按某种规则,但相邻值不为倍数为佳)递减直到1。最后一次即对一个基本有序序列进行直接插入排序。

3 直接选择排序:从待排序列中选择最小(大)与第一个(最后一个)元素交换次序。

4 堆排序:最大或最小堆,父结点元素大于或者小于所以子结点元素。以最大堆为例,先建立堆,再将最大值与最后一个元素交换,调整前面n-1个元素形成的堆为最大堆。

5 冒泡排序:依次两两比较并交换次序。

6 快速排序:将小于和大于某一旗语的元素分列两边,再对两部分进行快速排序。

7 归并排序:对左右两个子序列进行归并再合并。

8 基数排序:按位数排序,最小位到最大位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值