最近跟朋友在讨论数据库优化的时候,说到了稳定排序和不稳定排序的问题,所以就把聊天记录的一部分记下来。
说一下稳定排序算法。和不稳定排序算法
所谓稳定排序算法就是排序后,子序列不变
例如有序列
1 |
A = [[3, 1], [2, 4], [2, 3]] |
如果按A[0]降序排列,如果是稳定排序,结果肯定是
1 |
A = [[2, 4], [2, 3], [3, 1]] |
[2,4]永远在[2,3]前面
如果是不稳定排序
1 |
A = [[2, 4], [2, 3], [3, 1]] |
1 |
A = [[2, 3], [2, 4], [3, 1]] |
这两种可能都有。看具体算法
例如选择排序、冒泡排序就是不稳定排序。
你可以试试用来排[3,1] [2,4] [2,3]这个序列。用冒泡的话。从尾部冒泡到头部,从小到大,结果肯定就是
1 |
[[2, 3], [2, 4], [3, 1]] |
破坏了[2,4] [2,3]数组中第二个数的子序列