【问题标题】:Number of key comparisons for best case in MergeSortMergeSort 中最佳情况的关键比较数
【发布时间】:2020-11-17 12:09:53
【问题描述】:

我真的很困惑如何计算 MergeSort 中最佳情况的键比较次数。假设数组输入大小为a,其中a=2^k

【问题讨论】:

    标签: arrays sorting mergesort


    【解决方案1】:

    由于数组大小是 2 的幂,所有合并阶段都涉及大小相等的切片,所有 2 的幂。一对长度为 p 的切片的最小比较次数为 p,例如如果数组已经排序。

    因此不同2的幂的比较总数:

    • a=1 -> 0 比较
    • a=2 -> 1 个比较
    • a=4 -> 2*1+2 = 4 次比较
    • a=8 -> 2*4+4 = 12 次比较
    • a=16 -> 2*12+8 = 32 次比较
    • a=32 -> 2*32+16 = 80 次比较
    • a=2k -> k * 2k-1 个比较
    • a=2k+1 -> 2 * k * 2k-1 + 2k -> (k+1) * 2k 次比较 (QED)

    在最佳情况下,归并排序将对长度为 2k 的数组执行 k * 2k-1 次比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      相关资源
      最近更新 更多