Timsort堆栈不变 - 为什么要尽可能地延迟合并?

时间:2012-06-06 05:49:37

标签: python algorithm sorting timsort

我正在尝试理解Timsort算法,但是我无法遵循实现堆栈不变量的原因:

  
      
  1. A> B + C
  2.   
  3. B> ç
  4.   

根据this文件,

  

我们希望尽可能地延迟合并以便利用稍后可能出现的模式,但是我们希望尽快合并以利用刚刚发现的运行在内存层次结构中仍然很高

我理解我们希望尽快进行合并以利用缓存效果,但我不明白为什么要延迟它的原因。他的意思是什么“模式”?

1 个答案:

答案 0 :(得分:0)

这里的模式是指被排序数据中的模式。例如,Timsort正在寻找数据中增加(或减少)的运行,这些运行要么已经排序,要么可以通过反转原地运行来简单地进行排序。然后它尝试将这些运行用于其mergesort分区。

顺便提一下,关于Timsort的维基百科文章可能对您有用:https://en.wikipedia.org/wiki/Timsort