排序算法
排序算法是计算机科学中用于将一组数据按特定顺序排列的算法。常见的排序算法包括:
1. 比较排序
冒泡排序(Bubble Sort)
-
通过重复比较相邻元素并交换顺序,逐步将最大元素“冒泡”到末尾。
-
时间复杂度:O(n²)
选择排序(Selection Sort)
-
每次从未排序部分选择最小元素,放到已排序部分的末尾。
-
时间复杂度:O(n²)
插入排序(Insertion Sort)
-
将未排序部分的元素逐个插入到已排序部分的适当位置。
-
时间复杂度:O(n²)
快速排序(Quick Sort)
-
通过选择一个“基准”元素,将数组分为两部分,递归排序。
-
时间复杂度:平均 O(n log n),最坏 O(n²)
归并排序(Merge Sort)
-
将数组分成两半,分别排序后合并。
-
时间复杂度:O(n log n)
堆排序(Heap Sort)
-
利用堆数据结构,将数组转换为最大堆,逐步提取最大元素。
-
时间复杂度:O(n log n)
2. 非比较排序
计数排序(Counting Sort)
-
适用于小范围整数,通过计数每个元素的出现次数进行排序。
-
时间复杂度:O(n + k),k 为数据范围
桶排序(Bucket Sort)
-
将数据分到多个桶中,分别排序后合并。
-
时间复杂度:O(n + k)
基数排序(Radix Sort)
-
按位排序,从最低位到最高位依次进行。
-
时间复杂度:O(nk),k 为最大位数
3. 其他排序
希尔排序(Shell Sort)
-
插入排序的改进版,通过分组排序逐步减少间隔。
-
时间复杂度:取决于间隔序列,通常优于 O(n²)
Tim Sort
-
结合归并排序和插入排序,适用于实际数据。
-
时间复杂度:O(n log n)
总结
-
时间复杂度:从 O(n log n) 到 O(n²) 不等。
-
空间复杂度:有些是原地排序(如快速排序),有些需要额外空间(如归并排序)。
-
稳定性:稳定排序(如归并排序)保持相等元素的相对顺序,不稳定排序(如快速排序)则不一定。

浙公网安备 33010602011771号