假设我得到了这些整数6,1,4,2,5,9,6,3,4,并且run的大小是2,所以我们从插入排序开始,然后得到以下子数组:
1-6,2-4,1-5,6-9,3-4
我的问题是如何合并它们以获得排序数组??我的意思是,我是否合并了每两个数组,然后再合并其他数组等等?
发布于 2018-05-21 13:19:37
创建初始运行后,然后合并运行。Timsort使用堆栈来跟踪运行边界,并使用堆栈中的前3个条目来决定合并哪个项,以便在保持“稳定”的同时“平衡”合并。可以使用队列(FIFO)而不是堆栈(LIFO) (虽然我不确定这在技术上是否仍然是时间排序)。对于10个元素,运行大小为3将减少一次合并传递。Tim排序通常使用较大的最小运行大小,32到64 (包括在内),如果自然运行小于计算的理想最小运行大小,则使用插入排序强制最小运行大小。链接到wiki文章:
https://stackoverflow.com/questions/50437824
复制相似问题