我想排序一百万个数字。我已经把它们放在记忆中了(让我们假设它们合适)而且我知道一个事实很可能是任何给定的数字最初都在排序后非常接近它的最终位置(即原始数据中的第1000个数字很可能在排序后最终位于900和1100之间。
在这种情况下哪种排序方法效果最好?最重要的是,为什么它会比其他人表现更好?假设内存对于任何常用方法都足够大。
答案 0 :(得分:1)
普通旧插入排序在时间O(nk)中运行,如果您在距离其最终位置最多k个点的n个元素上运行它。许多排序算法,特别是introsort,通过让排序算法在元素足够接近然后切换到插入排序后停止排序来使用这一事实。由于插入排序具有隐藏在big-O中的非常低的常数因子,我怀疑它在这里可以很好地工作。