# 排序算法

# 简介

排序算法是最基础也是最重要的算法之一。本章节将详细介绍几种常见的排序算法,包括冒泡排序、选择排序、插入排序、归并排序和快速排序。每种算法都配备了交互式可视化演示,帮助你更直观地理解算法的工作原理。

# 算法列表

# 1. 冒泡排序(Bubble Sort)

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:稳定

比较次数: 0

交换次数: 0

# 2. 选择排序(Selection Sort)

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:不稳定

比较次数: 0

交换次数: 0

# 3. 插入排序(Insertion Sort)

  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:稳定

比较次数: 0

交换次数: 0

# 4. 归并排序(Merge Sort)

  • 时间复杂度:O(n log n)
  • 空间复杂度:O(n)
  • 稳定性:稳定

比较次数: 0

交换次数: 0

# 5. 快速排序(Quick Sort)

  • 时间复杂度:O(n log n)
  • 空间复杂度:O(log n)
  • 稳定性:不稳定

比较次数: 0

交换次数: 0

# 算法比较

算法 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性
冒泡排序 O(n²) O(n²) O(1) 稳定
选择排序 O(n²) O(n²) O(1) 不稳定
插入排序 O(n²) O(n²) O(1) 稳定
归并排序 O(n log n) O(n log n) O(n) 稳定
快速排序 O(n log n) O(n²) O(log n) 不稳定

# 如何选择排序算法

  1. 小规模数据(n < 50)

    • 推荐使用插入排序
    • 代码简单,常数项小
    • 对接近有序的数据特别高效
  2. 中等规模数据(50 ≤ n < 10000)

    • 推荐使用快速排序
    • 平均性能最优
    • 原地排序,空间效率高
  3. 大规模数据(n ≥ 10000)

    • 推荐使用归并排序
    • 稳定的O(n log n)时间复杂度
    • 适合外部排序
  4. 特殊需求

    • 需要稳定排序:使用冒泡排序(小规模)或归并排序(大规模)
    • 空间严格受限:使用选择排序或冒泡排序
    • 数据基本有序:使用插入排序