610's Algorithm Teaching

插入排序

插入排序是一种简单直观的排序算法,类似于我们整理扑克牌的方式。它的工作原理是将数组分为已排序和未排序两部分,依次将未排序元素插入到已排序部分的正确位置。

算法原理

插入排序的基本思想是:假设第一个元素已经有序,从第二个元素开始,将每个元素插入到前面已排序部分的正确位置。对于每个元素,从后向前比较,找到合适的位置插入。这个过程重复进行,直到所有元素都排好序。

算法步骤

  • 将数组分为已排序部分(初始包含第一个元素)和未排序部分
  • 从第二个元素开始,依次处理未排序部分的每个元素
  • 对于当前元素,从后向前与已排序部分的元素比较
  • 找到合适的位置,将当前元素插入到该位置
  • 重复上述步骤,直到所有元素都排好序

时间复杂度

  • 最坏情况:O(n²) - 当列表是逆序时
  • 平均情况:O(n²)
  • 最好情况:O(n) - 当列表已经有序时

空间复杂度

O(1) - 插入排序是原地排序算法,只需要常数级别的额外空间。

稳定性

插入排序是稳定的排序算法,相等元素的相对顺序不会改变。

适用场景

  • 数据规模较小的排序任务
  • 几乎已经有序的数据
  • 在线排序(数据逐步到达的情况)

优缺点

  • 优点:算法简单,易于实现;对小规模数据效率高;稳定;对几乎有序的数据效率很高
  • 缺点:时间复杂度高,不适合大规模数据;需要频繁移动元素
返回排序算法