BlockTimSort A stable, adaptive block merge sort that has O(n log n) worst case and O(sqrt(n)) memory.