【问题标题】:Tim Sort Merging Arrays PartTim 排序合并数组部分
【发布时间】:2018-05-20 17:56:39
【问题描述】:

假设我得到了这些整数 6,1,4,2,1,5,9,6,3,4 并且运行的大小是 2,所以我们从每次运行的插入排序开始,我得到这些子数组:

1-6、2-4、1-5、6-9、3-4

我的问题是如何合并它们以获得排序数组?我的意思是我是否合并每两个数组,然后合并其余的等等?

【问题讨论】:

    标签: sorting timsort


    【解决方案1】:

    创建初始运行后,然后合并运行。 Timsort 使用堆栈来跟踪运行边界,并使用堆栈上的前 3 个条目来决定要合并哪些运行以“平衡”合并,同时保持“稳定性”。可以使用队列(FIFO)而不是堆栈(LIFO)(尽管我不确定这在技术上是否仍然是 timsort)。对于 10 个元素,运行大小为 3 将减少一次合并通道。 Timsort 通常使用更大的最小运行大小,32 到 64(含),如果自然运行小于计算的理想最小运行大小,则使用插入排序强制最小运行大小。维基文章链接:

    https://en.wikipedia.org/wiki/Timsort

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多