Tim 排序合并数组部分

Tim Sort Merging Arrays Part

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

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

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

创建初始 运行 后,然后合并 运行。 Timsort 使用堆栈来跟踪 运行 边界,并使用堆栈中的前 3 个条目来决定将哪些 运行 合并到 "balance" 合并,同时保持 "stability" .可以使用队列 (FIFO) 而不是堆栈 (LIFO)(尽管我不确定这在技术上是否仍然是 timsort)。对于 10 个元素,运行 大小为 3 将减少一次合并传递。 Timsort 通常使用更大的最小 运行 大小,32 到 64(含),如果自然 运行 小于计算出的理想最小 [=18],则使用插入排序强制最小 运行 大小=] 大小。 Link 至 wiki 文章:

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