喻季情 2026-05-03 14:25:44
上周,我那个朋友在编程群里问起十大排序算法,以下是我整理的清单:
1. 冒泡排序 (Bubble Sort) 2. 选择排序 (Selection Sort) 3. 插入排序 (Insertion Sort) 4. 快速排序 (Quick Sort) 5. 归并排序 (Merge Sort) 6. 堆排序 (Heap Sort) 7. 计数排序 (Counting Sort) 8. 基数排序 (Radix Sort) 9. 桶排序 (Bucket Sort) 10. 希尔排序 (Shell Sort)
这些算法各有特点,适用于不同的场景。你看着办,选哪个看需求。我刚想到另一件事,快速排序是原地排序,其他几种排序算法中,归并排序和基数排序是非原地排序。本质上,排序算法的核心是要将无序的数据变成有序的。每个人情况不同,选择合适的算法很重要。
152 赞
姜叔承 2026-04-26 16:22:12
- 快速排序:平均时间复杂度O(nlogn),最坏O(n^2),例如Google内部排序算法。
- 归并排序:时间复杂度O(nlogn),例如Java的Arrays.sort()。
- 堆排序:时间复杂度O(nlogn),例如C++的STL sort()。
- 希尔排序:时间复杂度O(nlogn),例如Python的内置sort()。
- 冒泡排序:时间复杂度O(n^2),例如Python的内置sorted()。
- 选择排序:时间复杂度O(n^2),例如C的qsort()。
- 插入排序:时间复杂度O(n^2),例如C的qsort()。
- 基数排序:时间复杂度O(nk),例如Python的内置sorted()。
- 计数排序:时间复杂度O(n+k),例如C++的STL sort()。
- 桶排序:时间复杂度O(n+k),例如C++的STL sort()。
214 赞
姚仲炫 2026-04-28 11:44:30
- 快速排序:平均时间复杂度O(nlogn),最坏O(n^2)。
- 归并排序:时间复杂度O(nlogn),空间复杂度O(n)。
- 堆排序:时间复杂度O(nlogn),空间复杂度O(1)。
- 冒泡排序:时间复杂度O(n^2),空间复杂度O(1)。
- 选择排序:时间复杂度O(n^2),空间复杂度O(1)。
- 插入排序:平均时间复杂度O(n^2),最佳O(n)。
- 希尔排序:时间复杂度O(n^2),但通常优于其他O(n^2)算法。
- 基数排序:时间复杂度O(nk),空间复杂度O(n+k),适用于整数排序。
- 计数排序:时间复杂度O(n+k),空间复杂度O(k),适用于小范围整数排序。
- 桶排序:时间复杂度O(n+k),空间复杂度O(n+k),适用于整数排序。
实操提醒:根据数据特性和需求选择合适的排序算法。
80 赞