2013-03-19 91 views
0

我必須找到一種算法來對O(n)複雜度中的數組進行排序。 數組長度爲n,有兩個不同的鍵。O(n)中的2鍵搜索算法

例如這個數組中的java:

int[][] array = {{1,2},{2,1},{1,1}}; 

結果應該是

1 1 
1 2 
2 1 

我解決這個問題掙扎..

誰也許能幫助我嗎?

在此先感謝

+0

'數= digit1 * 10 + digit2' – 2013-03-19 15:36:26

+7

一般排序不能在O(n)的被DOEN,是否有對數據的任何約束? – 2013-03-19 15:36:26

+0

[排序算法](http://en.wikipedia.org/wiki/Sorting_algorithm)。 – 2013-03-19 15:37:09

回答

1

如果您的數據存儲在Trie,然後DFT(深度優先遍歷)會告訴你你的特里是如何被定義實際上是基數排序。

如果您已經構建了Trie,並且所有子集都具有相同數量的元素,則樹的樹葉依次爲子集,樹葉的深度爲每個子集的元素數。

使用特里,你有O(m),其中M =子集

或者你可以嘗試一個基數排序,那就是你有Ω(N * M),其中n =一分大小號-set

..hope這有助於