排序算法

排序算法是计算机科学中用于将一组数据按特定顺序排列的算法。常见的排序算法包括:

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²) 不等。

  • 空间复杂度:有些是原地排序(如快速排序),有些需要额外空间(如归并排序)。

  • 稳定性:稳定排序(如归并排序)保持相等元素的相对顺序,不稳定排序(如快速排序)则不一定。

posted @ 2025-03-06 12:06  弗里德里希恩格hao  阅读(18)  评论(0)    收藏  举报