2010-11-04 18 views
1

我有一個對象列表(L1)和另一個整數列表(L2),它們表示對象應該處於的順序。對於這個問題並不重要的原因,唯一的操作是我允許在L1執行是到位列表排序

L1.move(int fromIndex, int toIndex) 

我在想,如果有人可以點我的算法,可以把對象L1使用僅這一項操作由L2指定的順序,或在地方分類。

感謝

+0

是問題找到任何算法,首先做到這一點,或找到一個有效的呢? – 2010-11-04 23:41:37

+0

列表中不超過20個元素,所以我對速度沒有真正的關注。 – Jon 2010-11-04 23:42:24

+0

該項目是在N之前插入的,如果我有一個L1中的對象a,b,c的列表,並且我調用L1.move(2,0),那麼新列表是c,a,b – Jon 2010-11-04 23:54:15

回答

2

看看這些: 冒泡排序,梳排序,選擇排序,插入排序,堆排序,Shell排序。

+0

Yay!梳理排序! (幾乎沒有人使用它,這是一種恥辱: - /)另外,列表稍微減少是一個穩定的排序是必需的... – 2010-11-04 23:57:38

+0

@pst,啊,關於穩定性的好點。 – 2010-11-05 00:05:14

0

Look here,我發佈了一個關於使用O(1)額外空間重新排列數組的方法的答案。我不確定它是否與您擁有的move的語義完全匹配,但可能適用。