我有一組對象,我需要生成一個排序列表,但是我的比較函數是不完整的,並且在排序算法部分留下了一些「想象力」空間。使用不完整的比較函數排序列表
具體地,給出的樹木像集合了以下內容:
A E | | B--C F | D
我手邊是一組節點{A, B, C, D, E, F}
的,沒有特定的順序,並測試直接父子關係的函數:
parent(A, B) parent(A, C) parent(B, D) parent(E, F)
我需要拼合到一個列表中的父母子女之前在那裏走到這一步,但除此之外,順序是不重要的。因此,這些結果是可以接受的:
A, B, C, D, E, F. A, B, D, C, E, F. E, F, A, B, C, D. A, E, B, C, F, D.
設定將會很小,最多幾十個,所以我不會太在意性能。我所關心的是避免列表以外的臨時數據結構:由於我使用的語言的限制,將這些項目組織到臨時樹中(例如)會令人不快。
對於沒有全局/共享狀態的算法+1:我正在使用的語言恰巧通過值傳遞列表(複製)。而且我確實有一個便宜的操作來查找元素的父項。 – 2009-12-19 16:12:18
或者,也許我不......那個操作可能會找到一個不在輸入集中的父類(我只考慮更大森林的一個子集),所以我必須搜索輸入集。 – 2009-12-19 16:15:22