【发布时间】:2012-03-18 14:07:57
【问题描述】:
如果你得到:
- 一定数量的数据
- 内存大小是数据大小的一半
- 部分数据已排序
- 您不知道已排序数据的大小。
你会选择哪种排序算法? 我在插入和快速排序之间争论。我知道插入排序的最佳情况是 O(n),但最坏的情况是 O(n2)。此外,考虑到内存有限的事实,我会将数据分成两部分,并对它们进行快速排序,然后将所有内容合并在一起。拆分数据需要 O(n) 时间,合并数据需要 O(n) 时间,使用快速排序对数据进行排序需要 O(n log n) 时间,净运行时间为 O(n log n)。
有人对如何改进有任何建议吗?
【问题讨论】:
-
这是作业吗?它有一种家庭作业的气息。
-
你应该考虑把这个放到程序员部分。
-
不,正在修改数据结构。我刚刚从 UCBerkley 的你的管子上发现了一些很棒的课程,我正在尝试用排序算法锻炼自己。
-
@Rudy 只是数据结构
-
@Mohamed 但是堆排序需要一个数组,这意味着我拥有的所有数据的数组会超过我的内存大小吗?还是我仍然应该划分数据,然后使用堆排序对它们进行排序?无论如何,它不会仍然是相同的时间复杂度吗?
标签: java algorithm sorting data-structures space-complexity