0

カスタムの順序付けルールで約 100000 の int を並べ替える必要があります。Comparator を使用する場合、配列 Integer インスタンスが必要です。これは、作成が遅く、ソートが遅く、より多くのメモリを必要とします。

Android 4.2 を搭載した Galaxy Nexus の簡単なベンチマーク:

createIntArrayAndFillWith1to100000; // 18 ms
createIntegerArrayAndFillWith1to100000; // 191 ms (using Integer.valueOf(i))
Arrays.sort(randomInts); // 354 ms
Arrays.sort(randomIntegers, simpleComparator); // 1734 ms

カスタムソートの実装は私の最良の選択肢ですか?

4

1 に答える 1

1

唯一の方法は、要素データ型intの配列にソートアルゴリズムを実装することだと思います。Java ライブラリは、各基本データ型のバージョンを提供していません。ボクシング/アンボクシングが答えです。

この特別な必要性のために、ソートアルゴリズムを実装するだけです。(速度が本当に重要な場合)クイックソートを使用したインプレースソートは、クイックソートを実装するのが非常に簡単です(ウィキペディア)

于 2012-12-22T16:30:30.753 に答える