我有一些任意對象的列表,爲示例的目的假設他們(integer, something-else)
雙,但它們基本上可以是任何東西:有平等的財產分組對象
[(5, a), (3, c), (2, f), (3, a), (4, c), (1, d), (5, b), (5, d)]
我想這些組基於它們的一個屬性的對象,使得共享所述屬性的相同值的元素在結果列表中相鄰。例如,上述名單中的整數值進行分組:
[(3, a), (3, c), (1, d), (4, c), (2, f), (5, b), (5, a), (5, d)]
正如你看到的,沒有任何一種秩序是必要的,也不是要穩定所需要的操作。
天真的方法是排序列表。這具有衆所周知,經過充分測試和足夠快的優點。
我好奇,但:有沒有爲這個不涉及排序的算法,而在複雜性方面具有競爭力(O(n)
時間O(n)
空間或O(n log n)
時間O(1)
空間)?
有'O(1)'空間的排序算法,排序在這裏很自然。 – unkulunkulu
定義「合理」空間。是O(n)是否合理? – amit
@amit:是的。編輯了這個問題。 – Fanael