标签:保留 缓存 归并排序 区域 相等 时间 算法 因此 冒泡排序
排序的稳定性,指原有数据相同值的原始次序不变。
可以:
不可以:
稳定性的意义:
工程上的排序算法是综合排序:先调用快排或归并排序,再调用插入排序。
在样本量小于 60 的时候使用插入排序,对比冒泡排序和选择排序,插入排序的时间复杂度是受数据状况影响的,范围是 [O(n), O(n^2)] , 而且其代码简洁,常数项低;
样本量大于 60 的时候,在能使用快排的场景下,如不用区分数据的差异,不追求稳定性,这时选用快排,因为其非常简洁,操作少,常数项低;需要区分数据的差异,要求算法具有稳定性的时候使用归并排序。
工程中需要将快排和归并排序的递归调用部分改写成非递归的调用。
归并排序空间复杂度是 O(N),可以变成 O(1),使用的是“内部缓存法”。还有一种叫原地归并排序,也是将空间复杂度变成 O(1),但是时间复杂度变成 O(n^2),这时候使用归并排序的意义就不是很重要了。
快排是可以变成具有稳定性的,很难,具体看“01 stable sort”,属于论文级别的算法了。有一类题目,要求将数组的数按照奇偶分排两侧,保持稳定性,说的就是“01 stable sort”。
标签:保留 缓存 归并排序 区域 相等 时间 算法 因此 冒泡排序
原文地址:https://www.cnblogs.com/chenxianbin/p/11896787.html