TimSort算法是一種起源於歸併排序和插入排序的混合排序算法,設計初衷是爲了在真實世界中的各種數據中可以有較好的性能。
基本工作過程是:
1.掃描數組,確定其中的單調上升段和嚴格單調下降段,將嚴格下降段反轉;
2.定義最小基本片段長度,短於此的單調片段通過插入排序集中爲長於此的段;
3.反覆歸併一些相鄰片段,過程中避免歸併長度相差很大的片段,直至整個排序完成,所用分段選擇策略可以保證O(n log n)時間複雜性。
可以看到,原則上TimSort是歸併排序,但小片段的合併中用了插入排序。