📜  DAA合并排序

📅  最后修改于: 2020-12-10 03:55:32             🧑  作者: Mango

合并排序

它紧密遵循分而治之范式。

从概念上讲,它的工作方式如下:

  • 划分:将未排序的列表划分为两个大约一半大小的子列表。
  • 征服:递归地对两个子列表中的每个列表进行排序,直到列表大小为1,在这种情况下,将返回列表项。
  • 合并:将两个已排序的“子”列表重新合并为一个已排序的列表。

主要目的是按降序对未排序列表进行排序。

下图说明了分割(分割)过程。


在这种方法中,我们将给定的列表分为两半。然后递归分析合并排序和划分。我们得到许多排序列表。

最后,我们结合了排序列表。

合并排序分析:

令T(n)为合并排序中花费的总时间

  • 分两半最多2T DAA合并排序时间
  • 当我们合并排序列表时,我们总共有n-1个比较,因为只需要将要保留的最后一个元素复制到合并列表中,就不会进行比较。

因此,关系公式变为

但是我们忽略了“ -1”,因为该元素将需要一些时间才能复制到合并列表中。

所以T(n)= 2T ”DAA合并排序” + n ……等式1

注意:停止条件T(1)= 0,因为最后只剩下1个元素需要复制,因此将不进行比较。

将2个等式放在1个等式中

将3个方程式中的4个方程式

从停止条件开始:

双面应用日志:

log n = log 2
logn =我log2
DAA合并排序 = i

log 2 n = i

从6等式