8大经典排序算法比较

时间:2022-06-04 09:51:47

空间复杂度:

O(1):插入排序,选择排序,冒泡排序,堆排序,希尔排序

O(logn-n):快速排序

O(n):归并排序

O(m):桶排序(m为桶大小)


时间复杂度:

时间复杂度为O(N)的算法:计数排序和基数排序

不基于比较的排序算法

不适用于所有的情况,需要确定范围大小


时间复杂度为O(N2)的算法:

冒泡排序,选择排序:与初始数据序列无关

插入排序:插入排序过程与原始数据顺序有关,每次移动不超过K时,时间复杂度不超过O(N*K);


时间复杂度为O(n*logN)

快速排序:与初始数据序列无关

归并排序:与初始数据序列无关


例题:在一个几乎拍好序的数据中,如何快速排序,每个需要变动的排序在K之内

方案:使用改进后的堆排序,每次排序建立一个大小为K的小根堆将堆顶最小数据弹出,每次时间logk,一共K次,总时间为N*logK;


哈希表的实现:时间复杂度:O(N),空间复杂度:O(N);


稳定性:

稳定排序:插入排序,冒泡排序,归并排序,计数排序,基数排序,桶排序

不稳定排序:选择排序,快速排序,希尔排序,堆排序。