排序算法

稳定排序和不稳定排序:

稳定排序:排序后相等元素的前后位置不会变化。

1、插入排序(稳定)

2、选择排序(不稳定)

3、交换排序

4、归并排序(稳定)
待排序序列分为若干个子序列,每个子序列是有序的,然后再合并子序列。从小到大比较子序列,小的放入新序列,然后两个子序列的第一个元素继续比较,取小的放入新序列。

5、基数排序(稳定)
先按个位数大小,排序出新的序列
再按十位数大小,将新序列重新排序
。。。

Arrays.sort(T[],Comparator<? super T> c)
内部采用的归并排序,因此是稳定的。

Arrays.sort(int[] a)
内部采用的快速排序,因此是不稳定的。

Collections.sort(List list)、和Collections.sort(List list,Comparator<?super T> c); 采用的都是稳定的排序,采用的何种排序方式,需要核实。

其他排序

计数排序
先设定好数组长度(数的最大值),值都初始化为0。然后再将数作为下标,出现一次这个下标的值加一,最后将不为0的下标输出既可获得排序。

桶排序
与计数排序类似

Blog

Dump

Project