java 写10种 list 排序
时间: 2023-06-11 19:04:27 浏览: 103
1. 冒泡排序:基本的比较和交换,比较次数为O(n^2),交换次数粗略为O(n^2)。
2. 选择排序:对n个元素进行n-1次选择,每次选择最小值,交换n-1次。比较次数为O(n^2),时间稳定。
3. 插入排序:向前比较并插入,比较次数为O(n^2)。在最坏情况下时间复杂度为O(n^2),插入排序更适合已经有一定顺序的元素序列。
4. 快速排序:分治法的代表,平均而言,排序n个元素需要O(nlogn)时间,适合大规模数据的排序。
5. 归并排序:同样是分治法的代表,时间复杂度稳定为O(nlogn),需要临时空间存储,对于大规模数据,归并排序更占优势。
6. 堆排序:借助堆这一数据结构完成的排序,需要对堆进行构建,时间复杂度为O(nlogn),不需要外部存储空间。
7. 希尔排序:缩短比较距离的排序,实现略微复杂,时间复杂度上限为O(nlogn),不稳定排序。
8. 计数排序:统计元素出现的次数,比较适用于元素值范围较小的排序,时间复杂度为O(n+k),比较稳定,但需要额外空间。
9. 桶排序:将元素划分到若干个桶中,可以减少比较次数和交换次数。时间复杂度O(n+k) (k为桶数),空间复杂度O(n+k)。
10. 基数排序:将元素按照位数进行排序,时间复杂度为O(n*k),k为最多的位数,适用于较长的整数或字符串排序,稳定排序。
阅读全文