博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法复杂度/稳定性总结
阅读量:6335 次
发布时间:2019-06-22

本文共 762 字,大约阅读时间需要 2 分钟。

类别 排序法 时间复杂度 空间复杂度 稳定性 备注
平均 最差 最好
插入排序 直接插入 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 基数排序:按位数排序,最小位到最大位。

转载于:https://www.cnblogs.com/justinh/p/6514826.html

你可能感兴趣的文章
正则表达式
查看>>
mysql [ERROR] Can't create IP socket: Permission denied
查看>>
PBRT笔记(4)——颜色和辐射度
查看>>
CustomView的手势缩放总结
查看>>
linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
查看>>
CentOS yum安装mysql
查看>>
OceanBase笔记1:代码规范
查看>>
[Algorithms] Longest Increasing Subsequence
查看>>
MAC下GitHub命令操作
查看>>
springboot之filter/listener/servlet
查看>>
Thinkphp --- 去掉index.php
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构
查看>>
oracle故障解决
查看>>
tcpdump
查看>>
数据库内存结构
查看>>
利用Shell开发跳板机功能脚本案例
查看>>
51CTO的技术门诊谈OSSIM
查看>>
六年心路成长 —— 做自己
查看>>
ios电话拨打进行监听电话状态
查看>>
京东基于Spark的风控系统架构实践和技术细节
查看>>