この記事では、Java Exchangeソートのパリティソートの実装方法について説明します。参照のためにそれを共有してください。詳細は次のとおりです。
パリティソート、またはパリティ転置ソート、またはレンガのソートは、ローカルインターコネクトを使用した並列コンピューティングのために元々発明された比較的単純なソートアルゴリズムです。これは、バブルソートの特性と同様の比較ソートです。
このアルゴリズムでは、アレイ内の隣接(奇数-Ven)位置の数値ペアを比較することにより、奇数とevenのペアが間違った順序である場合(最初のペアは2番目のペアよりも大きい)、交換します。次のステップを繰り返しますが、すべての(偶数)位置の数値ペアに対して。このように交互に続けてください。
プロセッサアレイの並べ替え
並列コンピューティングソートでは、各プロセッサはそれに対応する1つの値を処理し、左および右側の近隣とのローカル相互接続のみを備えています。すべてのプロセッサは、操作を同時に比較および交換できます。これは、奇数、偶数、偶数の順序で交互に交互に交換できます。このアルゴリズムはもともと1972年にHabermannによって公開され、並列処理の効率を実証しました。
アルゴリズムは、各プロセッサに複数の値がある場合に効果的に拡張できます。 Baudetstevenson Parity Merge Partitioning Algorithmでは、各プロセッサが各ステップで所有するサブアレイをソートし、その後、近隣とマージパーティションまたは転置を実行します。
バッチャーのパリティ、さらにはソート
バッチャーパリティソートは、比較交換と完全なシャフル操作を使用する関連性があるが、より効率的なソートアルゴリズムです。
バッチャーのアプローチは、広範な相互接続を備えた並列コンピューティングプロセッサで非常に効率的です。
最悪の時間の複雑さ/シータ(n^2)
パリティソートの動的グラフは次のとおりです。
コード実装:
パッケージcom.baobaotao.test; :pre "> </span> * @param array <span style =" white-space:pre "> </span> */public static void batchersort(int [] array){int length = array.length; boolean flag = true(true){flag = true; 、i+1); false; 、i+1); false;交換するb * @param c交換される数/ public static void swap(int [] a、int b、int c){int temp = 0; ]> a [b] = a [c] = temp; printArr(int [] array){int c:array){system.out.print(c + "")} out.println(); [] number = {11,95,45,78,84,51,24,12};出力分析:
11 45 15 95 51 78 12 84 2411 15 45 51 12 95 24 78 8411 15 12 45 24 51 78 95 8411 12 15 24 45 51 78 84 95
この記事がみんなのJavaプログラミングに役立つことを願っています。