我试图理解Timsort算法,但由于实现堆栈不变量的原因,我遇到了以下问题:
A>B+C
B>C类
根据this文件,
我们希望尽可能延迟合并,以便利用稍后可能出现的模式,但我们更希望尽快进行合并,以利用刚刚发现的运行在内存层次结构中仍然很高的情况。
我知道我们希望尽快进行合并以利用缓存效果,但我不明白为什么要延迟合并他所说的“模式”是什么意思?
最佳答案
这里的模式是指正在排序的数据中的模式。例如,timsort正在数据中寻找递增(或递减)的运行,这些数据要么已经排序,要么可以通过反转运行位置进行简单排序。然后,它尝试将这些运行用于其mergesort分区。
顺便说一下,维基百科关于timsort的文章可能对你有用:https://en.wikipedia.org/wiki/Timsort