简单排序
-
comparable接口介绍
某个类实现comparable接口后,我们就可以直接对这个类进行比较了 -
冒泡排序
1. 注意所说的第一次冒泡,指的是第一轮结束后的结果,也就是最大值被放在最后,而不是第一轮中交换一次后的结果 -
选择排序
-
插入排序
高级排序
- 希尔排序——选定一个增长量,h ,按照增长量对数据进行分组,对分好组的每一组数据使用插入排序,h=h/2,多次循环
- 归并排序
1. 递归
2. 时间复杂度为(n*log2(n))——log2(n)是分治,合并的次数
3. 辅助数组(与原始数组一样大),所以使用额外的内存空间,空间复杂度提升 - 快速排序
- 快排与归并排序的区别
1. 快排与归并都用到了分治思想,将一个数组分为两个部分,进行独立的排序(这里是指快排第一轮排序完成时,即a[0]已成为分割点时)
2. 归并排序将两个子数组分别排序,并将有序的子数组归并从而将整个数组排序
快排将两个子数组排完序后,整个数组已经有序不需要归并
3. 归并排序分组是完全等分的,而快排不是,切分的两个部分完全取决于数组的内容
稳定性
- 稳定性的意义:
1. 第一次的排完序的结果在接下来的排序中依然有所体现
2. 节省了内存开销,省去了无意义的交换步骤 - 只能在多次排序中体现,这里的多次排序指的是,按照不同的排序标准得到不同的排序结果