本文共 448 字,大约阅读时间需要 1 分钟。
简单的来说,稳定的排序算法在排序结束之后数值相同的数组的下标顺序是保持原来的顺序的,反之就不是稳定的
例如a[ ]={2,4,1,5,7,7,6}
还没有排序前
数组下标 | 数值 |
---|---|
0 | 2 |
1 | 4 |
2 | 1 |
3 | 5 |
4 | 7 |
5 | 7 |
6 | 6 |
稳定排序后
数组下标 | 数值 |
---|---|
0 | 1 |
1 | 2 |
2 | 4 |
3 | 5 |
4 | 6 |
5 | 7 |
6 | 7 |
不稳定排序
数组下标 | 数值 |
---|---|
0 | 1 |
1 | 2 |
2 | 4 |
3 | 5 |
4 | 6 |
6 | 7 |
5 | 7 |
如果排序结束后,a[5]可以保证一 定在a[6]前面, 也就是他们原有的顺序不变,那这种排序算法就是稳定的。(比如常见的冒泡排序、基数排序、插入排序.归并排序、桶排序、二叉树排序等都是稳定的排序算法)
反之,如果不能保证原有顺序,这种算法就是不稳定的。(比如常见的选择排序, 希尔排序,堆排序,快速排序等都是不稳定的排序算法)
快速记忆不稳定的排序算法的顺口溜可以这么说,快去选择一些朋友扎堆聊天
快:快速排序,选择:选择排序, 些:希尔排序,堆:堆排序。
转载地址:http://ggren.baihongyu.com/