关于随机选择算法

时间:2010-06-18 07:02:06

标签: java data-structures

我有这个数组A = <3,2,9,0,7,5,4,8,6,1>,我想写下所有最差的分区是正确的吗?谢谢

a1 = <0,2,9,3,7,5,4,8,6,1>
a2 = <1,9,3,7,5,4,8,6,2>
a3 = <2,3,7,5,4,8,6,9>
a4 = <3,7,5,4,8,6,9>
a5 = <4,5,7,8,6,9>
a6 = <5,7,8,6,9>
a7 = <6,8,7,9>
a8 = <7,8,9>
a9 = <8,9>
a10 = <9>

1 个答案:

答案 0 :(得分:1)

我的理解是你要显示给定数组的最差分区序列(像quicksort执行的分区)。

在这种情况下,您可以对数组进行排序,然后显示数组的所有“尾部”,从索引0开始,以索引n-1结束。

在您的示例中,排序的数组是:

[0,1,2,3,4,5,6,7,8,9]

然后尾巴是:

[0,1,2,3,4,5,6,7,8,9]

[1,2,3,4,5,6,7,8,9]

[2,3,4,5,6,7,8,9]

...

[8,9]

[9]

如果显示所有分区,那么这是一个O(n ^ 2)算法(显然无法改进)。如果您只需要显示枢轴,可以在O(n * log n)中进行。