Java算法 01-排序算法
十大排序算法
稳定性:相同数字排序前后的顺序不改变。
1. N方排序(三明治)
- 冒泡排序(稳定)最好N,
- 选择排序(不稳定)最好N方
- 直接插入排序(稳定)最好N
2. NlogN排序(四叶草)
- 快速排序
- 希尔排序
- 归并排序
- 堆排序
3. 其他(三明治)计数桶的基数
- 计数排序
- 桶排序
- 基数排序
一、冒泡排序
1. 普通版本
public void bubbleSort(int[] nums){
for(冒泡 n-1 次){}
for(大的冒泡到最后){}
}
2.改进版本
public void bubbleSort(int[] nums){
for(冒泡 n-1 次){}
Boolean flagSwap = false;
for(大的冒泡的最后){}
}
二、选择排序
public void selectSort(int[] nums){
for(选择n - 1次){}
for(遍历找最大,放到未排序的末尾){}
}
三、插入排序
四、快速排序
二叉树的后续遍历
哨兵+挖坑+交换+递归
五、希尔排序
对插入排序进行分组,主键减小分组数
for(int gap=arr.length/2; gap>0; gap/=2)
六、归并排序
二叉数的前序遍历
七、 堆排序
升序大顶堆,降序小顶堆