TimSort is highly optimization mergesort, it is stable and faster than old mergesort.
when comparing with quicksort, it has two advantages:
- It is unbelievably fast for nearly sorted data sequence (including reverse sorted data);
- The worst case is still O(N*LOG(N)).
To be honest, I don't think #1 is a advantage, but it did impress me.
Here are QuickSort's advantages
- QuickSort is very very simple, even a highly tuned implementation, we can write down its pseduo codes within 20 lines;
- QuickSort is fastest in most cases;
- The memory consumption is LOG(N).
Currently, Java 7 SDK implements timsort and a new quicksort variant: i.e. Dual Pivot QuickSort.
If you need stable sort, try timsort, otherwise start with quicksort.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…