610's Algorithm Teaching

归并排序

归并排序是一种高效的排序算法,采用分治策略。它将数组递归地分成两半,分别排序后,再将两个有序的子数组合并成一个有序的数组。

算法原理

归并排序的基本思想是:将数组分成两半,递归地对每一半进行排序,然后将两个有序的子数组合并成一个有序数组。这个过程重复进行,直到子数组的大小为1(单个元素已经有序),然后开始合并。

算法步骤

  • 如果数组长度为1或0,直接返回(已经有序)
  • 将数组分成两半
  • 递归地对左半部分进行归并排序
  • 递归地对右半部分进行归并排序
  • 将两个有序的子数组合并成一个有序数组

时间复杂度

  • 最坏情况:O(n log n)
  • 平均情况:O(n log n)
  • 最好情况:O(n log n)

空间复杂度

O(n) - 归并排序需要额外的空间来存储临时数组,空间复杂度为 O(n)。

稳定性

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

适用场景

  • 大规模数据的排序
  • 需要稳定排序的场景
  • 外部排序(数据量太大无法全部装入内存)

优缺点

  • 优点:时间复杂度稳定为 O(n log n);稳定排序;适合外部排序
  • 缺点:需要额外的空间 O(n);不是原地排序
返回排序算法