いくつかの任意のオブジェクトのリストがあります。例では、それらが(integer, something-else)
ペアであると想定していますが、基本的には何でもかまいません。
[(5, a), (3, c), (2, f), (3, a), (4, c), (1, d), (5, b), (5, d)]
これらのオブジェクトをプロパティの1つに基づいてグループ化し、そのプロパティの同じ値を共有する要素が結果のリストで隣接するようにします。たとえば、上記のリストは整数値でグループ化されています。
[(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)