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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27790011/article/details/84745961

不多说,先给图:
在这里插入图片描述
接触的排序算法有冒泡,选择,冒泡和选择差不多,不过冒泡是稳定的,而选择是不稳定的。所谓的稳定性就是指相同的值在排序后的序列中没有改变他们的相对位置。插入排序和希尔排序是一类的。
2.希尔排序是插入排序的升级版。具体的算法另再讲。

3.快速排序应该是笔试中手写快排见的最多的一种了见博客快速排序算法

4.堆排序是一种继续完全二叉树制造大顶堆或小顶堆进行的排序算法,见堆排序算法

关于时间复杂度:

平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。
线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序;
O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序
线性阶 (O(n)) 排序 基数排序,此外还有桶、箱排序。

关于稳定性:
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。
不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。

名词解释:
n:数据规模
k:“桶”的个数
In-place:占用常数内存,不占用额外内存
Out-place:占用额外内存
稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同

猜你喜欢

转载自blog.csdn.net/qq_27790011/article/details/84745961