クラス ParallelSorter
java.lang.ObjectSE
org.springframework.cglib.util.ParallelSorter
複数の配列を並行して効率的にソートするため。
長さが同じで型が異なる 2 つの配列が与えられた場合、並列に並べ替える標準的な手法は、行ごとに新しい一時オブジェクトを作成し、オブジェクトを一時配列に格納し、カスタムコンパレータを使用して配列を並べ替え、元の配列を抽出することです。値をそれぞれの配列に戻します。これは、時間とメモリの両方で無駄です。
このクラスは、並べ替える必要がある特定の配列のセットに合わせてカスタマイズされたバイトコードを生成し、両方の配列が同じ場所で同時に並べ替えられるようにします。
2 つのソートアルゴリズムが提供されています。クイックソートは、必要な比較とスワップがほとんどないため、1 つの列でソートするだけでよい場合に最適です。マージソートは、「安定した」ソートであるため、複数の列をソートする場合に最適です。つまり、以前のソートからの等しいオブジェクトの相対的な順序には影響しません。
ここでのマージソートアルゴリズムは「インプレース」バリアントであり、低速ですが、一時的な配列は必要ありません。
- 作成者:
- Chris Nokleberg
ネストされたクラスのサマリー
フィールドサマリー
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明protected int
compare
(int i, int j) static ParallelSorter
一連の配列に対して新しい ParallelSorter オブジェクトを作成します。void
mergeSort
(int index) protected void
mergeSort
(int lo, int hi) void
mergeSort
(int index, int lo, int hi) インプレースマージソートを使用して配列をソートします。void
mergeSort
(int index, int lo, int hi, ComparatorSE cmp) インプレースマージソートを使用して配列をソートします。void
mergeSort
(int index, ComparatorSE cmp) インプレースマージソートを使用して配列をソートします。abstract ParallelSorter
newInstance
(ObjectSE[] arrays) void
quickSort
(int index) クイックソートアルゴリズムを使用して配列を並べ替えます。protected void
quickSort
(int lo, int hi) void
quickSort
(int index, int lo, int hi) クイックソートアルゴリズムを使用して配列を並べ替えます。void
quickSort
(int index, int lo, int hi, ComparatorSE cmp) クイックソートアルゴリズムを使用して配列を並べ替えます。void
quickSort
(int index, ComparatorSE cmp) クイックソートアルゴリズムを使用して配列を並べ替えます。protected abstract void
swap
(int i, int j)
フィールドの詳細
a
コンストラクターの詳細
ParallelSorter
protected ParallelSorter()
メソッドの詳細
newInstance
create
一連の配列に対して新しい ParallelSorter オブジェクトを作成します。同じ ParallelSorter オブジェクトを使用して配列を複数回並べ替えることができます。- パラメーター:
arrays
- ソートする配列の配列。配列はプリミティブ型と非プリミティブ型を混在させることができますが、すべて同じ長さにする必要があります。
quickSort
public void quickSort(int index) クイックソートアルゴリズムを使用して配列を並べ替えます。- パラメーター:
index
- 並べ替える配列 (列)
quickSort
public void quickSort(int index, int lo, int hi) クイックソートアルゴリズムを使用して配列を並べ替えます。- パラメーター:
index
- 並べ替える配列 (列)lo
- 開始配列インデックス (行)、包括的hi
- 終了配列インデックス (行)、排他的
quickSort
クイックソートアルゴリズムを使用して配列を並べ替えます。- パラメーター:
index
- 並べ替える配列 (列)cmp
- 指定された列がプリミティブでない場合に使用するコンパレータ
quickSort
クイックソートアルゴリズムを使用して配列を並べ替えます。- パラメーター:
index
- 並べ替える配列 (列)lo
- 開始配列インデックス (行)、包括的hi
- 終了配列インデックス (行)、排他的cmp
- 指定された列がプリミティブでない場合に使用するコンパレータ
mergeSort
public void mergeSort(int index) - パラメーター:
index
- 並べ替える配列 (列)
mergeSort
public void mergeSort(int index, int lo, int hi) インプレースマージソートを使用して配列をソートします。- パラメーター:
index
- 並べ替える配列 (列)lo
- 開始配列インデックス (行)、包括的hi
- 終了配列インデックス (行)、排他的
mergeSort
インプレースマージソートを使用して配列をソートします。- パラメーター:
index
- 並べ替える配列 (列)cmp
- 指定された列がプリミティブでない場合に使用するコンパレータ
mergeSort
インプレースマージソートを使用して配列をソートします。- パラメーター:
index
- 並べ替える配列 (列)lo
- 開始配列インデックス (行)、包括的hi
- 終了配列インデックス (行)、排他的cmp
- 指定された列がプリミティブでない場合に使用するコンパレータ
compare
protected int compare(int i, int j) swap
protected abstract void swap(int i, int j) quickSort
protected void quickSort(int lo, int hi) mergeSort
protected void mergeSort(int lo, int hi)