【发布时间】:2011-02-15 07:37:09
【问题描述】:
我想出了几个策略,但我不完全确定它们如何影响整体行为。我知道平均情况是 O(NlogN),所以我认为这将在某个地方的答案中。如果我只是选择数组中的第一项作为快速排序的枢轴,我只想放置 NlogN+1,但我不知道这是否正确或可接受?如果有人能在这个问题上启发我,那就太好了。谢谢!
可能的策略:
a) 数组是随机的:选择第一项,因为这是最具成本效益的选择。
b) 数组主要是排序的:选择中间项,因此我们可能会补充每次一分为二的二进制递归。
c) 数组比较大:选择数组中的第一个、中间和最后一个索引并比较它们,选择最小的以确保我们避免最坏的情况。
d) 使用随机生成的索引执行“c”以降低选择的确定性。
【问题讨论】:
-
我不明白这个问题。
-
问:对于我选择的可能策略 (a-d),它们将如何影响快速排序算法的整体行为?
标签: java algorithm performance sorting quicksort