2010-06-18 75 views
0

我有這樣的陣列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> 
+5

「最差的分區」是一個我不熟悉的術語,還是這個問題需要更具體一些? – 2010-06-18 07:05:35

+0

最差的隨機分區意味着你的隨機數據樞軸是較少的一個,併爲a1創建一個分區,如0:n-1 – user355002 2010-06-18 07:09:20

+0

隨機數據樞是「0」,這使得最壞的分區(一個分區有零元素,另一個有「 n-1「元素 – user355002 2010-06-18 07:11:07

回答

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)中完成。

+0

是的,你得到我的意思,但在隨機選擇算法中,我們不排序我們的陣列! – user355002 2010-06-18 07:55:32

+0

我並沒有試圖實現「隨機選擇算法」(你是指找到一個集合的第k個最小數量?)。我只提出了一種打印快速分區意義上最糟糕的分區序列的方法。 – 2010-06-18 08:03:51

+0

好吧,我的順序是正確的我想,是嗎? – user355002 2010-06-18 08:41:48