クラス ParallelSorter

java.lang.ObjectSE
org.springframework.cglib.util.ParallelSorter

public abstract class ParallelSorter extends ObjectSE
複数の配列を並行して効率的にソートするため。

長さが同じで型が異なる 2 つの配列が与えられた場合、並列に並べ替える標準的な手法は、行ごとに新しい一時オブジェクトを作成し、オブジェクトを一時配列に格納し、カスタムコンパレータを使用して配列を並べ替え、元の配列を抽出することです。値をそれぞれの配列に戻します。これは、時間とメモリの両方で無駄です。

このクラスは、並べ替える必要がある特定の配列のセットに合わせてカスタマイズされたバイトコードを生成し、両方の配列が同じ場所で同時に並べ替えられるようにします。

2 つのソートアルゴリズムが提供されています。クイックソートは、必要な比較とスワップがほとんどないため、1 つの列でソートするだけでよい場合に最適です。マージソートは、「安定した」ソートであるため、複数の列をソートする場合に最適です。つまり、以前のソートからの等しいオブジェクトの相対的な順序には影響しません。

ここでのマージソートアルゴリズムは「インプレース」バリアントであり、低速ですが、一時的な配列は必要ありません。

作成者:
Chris Nokleberg
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static class
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected ObjectSE[]
  • コンストラクターのサマリー

    コンストラクター
    修飾子
    コンストラクター
    説明
    protected
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected int
    compare(int i, int j)
    create(ObjectSE[] arrays)
    一連の配列に対して新しい 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)
    インプレースマージソートを使用して配列をソートします。
    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)

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

  • コンストラクターの詳細

    • ParallelSorter

      protected ParallelSorter()
  • メソッドの詳細

    • newInstance

      public abstract ParallelSorter newInstance(ObjectSE[] arrays)
    • create

      public static ParallelSorter create(ObjectSE[] arrays)
      一連の配列に対して新しい ParallelSorter オブジェクトを作成します。同じ ParallelSorter オブジェクトを使用して配列を複数回並べ替えることができます。
      パラメーター:
      arrays - ソートする配列の配列。配列はプリミティブ型と非プリミティブ型を混在させることができますが、すべて同じ長さにする必要があります。
    • quickSort

      public void quickSort(int index)
      クイックソートアルゴリズムを使用して配列を並べ替えます。
      パラメーター:
      index - 並べ替える配列 (列)
    • quickSort

      public void quickSort(int index, int lo, int hi)
      クイックソートアルゴリズムを使用して配列を並べ替えます。
      パラメーター:
      index - 並べ替える配列 (列)
      lo - 開始配列インデックス (行)、包括的
      hi - 終了配列インデックス (行)、排他的
    • quickSort

      public void quickSort(int index, ComparatorSE cmp)
      クイックソートアルゴリズムを使用して配列を並べ替えます。
      パラメーター:
      index - 並べ替える配列 (列)
      cmp - 指定された列がプリミティブでない場合に使用するコンパレータ
    • quickSort

      public void quickSort(int index, int lo, int hi, ComparatorSE cmp)
      クイックソートアルゴリズムを使用して配列を並べ替えます。
      パラメーター:
      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

      public void mergeSort(int index, ComparatorSE cmp)
      インプレースマージソートを使用して配列をソートします。
      パラメーター:
      index - 並べ替える配列 (列)
      cmp - 指定された列がプリミティブでない場合に使用するコンパレータ
    • mergeSort

      public void mergeSort(int index, int lo, int hi, ComparatorSE cmp)
      インプレースマージソートを使用して配列をソートします。
      パラメーター:
      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)