Dijkstra 的平滑排序是对已经排序的数据的一种很好的排序。它是在 O (n lg n)最坏情况和 O (n)最好情况下运行的堆排序变体。我是算法的 写了一篇分析报告如果你好奇它是如何工作的。
自然合并排序是另一个非常好的方法——它是一个自底向上的合并排序变体,它将输入视为多个不同排序范围的连接,然后使用合并算法将它们连接在一起。重复这个过程,直到所有的输入范围都被排序。如果数据已经排序,并且 O (n lg n)最坏情况下,这将在 O (n)时间内运行。它非常优雅,尽管在实践中它不如 Timsort 或平滑排序等其他自适应排序。