一、排序的稳定性
排序的稳定性是指对于非基础类型的对象进行排序时,能否实现保留原来的相对位置,如果可以保留原来的位置则说明该类型具有稳定性。
1.有稳定性:冒泡排序(N^2)、插入排序(N^2)、归并排序(N*logN)
2.无稳定性:选择排序(N^2)、快速排序(N*logN)、堆排序(N*logN)
二、排序
时间 空间 稳定性
1.选择排序: O(N^2) O(1) X
2.冒泡排序: O(N^2) O(1) Y
3.插入排序: O(N^2) O(1) Y
4.归并排序: O(N*logN) O(N) Y
5.快速排序: O(N*logN) O(logN) X
6.堆排序: O(N*logN) O(1) X
三、工程上的算法改进
1.快排中R比L大60以内,换成插入排序
2.内置sort算法中,如果数据类型是基础类型,用快排,不需要稳定性。
非基础类型,用归并,保持稳定性。