如果给你:
- 一定数量的数据
- 内存大小为数据大小的一半
- 部分数据已排序
- 你不知道排序数据的大小。
你会选择哪种排序算法?我在插入和快速排序之间争论。我知道插入排序的最佳情况是 O(n),但最坏的情况是 O(n 2 )。此外,考虑到内存有限的事实,我会将数据分成两部分,并对它们进行快速排序,然后将所有内容合并在一起。拆分数据需要 O(n) 时间,合并数据需要 O(n) 时间,使用快速排序对数据进行排序需要 O(n log n) 时间,净运行时间为 O(n log n)。
有人对如何改善这一点有任何建议吗?