Java アプリケーションは、一部のキーの並べ替えと重複の削除にほとんどの時間を費やします。
そのため、適応したソート アルゴリズムを選択することが必須です。
キーは整数 (約 256 ビットですが、必ずしもそうとは限りません) であり、配列のサイズは 1000 ~ 100000 キーです。
入力配列は、連続するキー グループで構成されます。これらのグループは既にソートされており、小規模です (約 10 キー)。
配列の例 (3 つのグループ、32 ビット キー):
0x01000000
0x01010000
0x01010100
0x01010101
0x01000000
0x01010000
0x01010100
0x01010102
0x01000000
0x01020000
0x01020200
0x01020203
重複をソートして削除した後:
0x01000000
0x01010000
0x01010100
0x01010101
0x01010102
0x01020000
0x01020200
0x01020203
厳しいですか?何か案が ?リンクはありますか?
ありがとう
PS:マージソート、基数ソート、quiの多くのバリエーションを含むソートアルゴリズムを見た後...私はハッシュマップを掘り下げ続けています。
PPS : 最後に、Java レガシー マージ ソートをフォークし、フィルタリングとソートされたグループの概念を追加しました。それは素晴らしいスピードアップを提供します。