この記事では、Javaデータ構造とアルゴリズムのパリティソートアルゴリズムについて説明します。次のように、参照のために共有してください。
アルゴリズムのアイデア:
基本的なアイデアは、ある順序で奇数シーケンスを配置し、ある順序でシーケンスを、次に奇妙なシーケンスを別の順序で配置し、すべてが順序付けられるまである順序でも配置することです。
例を挙げましょう、
ソートされる配列[6 2 4 1 5 9]
奇妙なシーケンスを初めて比較すると、奇数シーケンスは、6と2、4、1、5、9などのシーケンスさえもその近隣と比較されます。
[6 2 4 1 5 9]
交換後、それはなります
[2 6 1 4 5 9]
偶数の2番目の比較は6と1、5と5は
[2 6 1 4 5 9]
交換後、それはなります
[2 1 6 4 5 9]
3回目の旅行は奇数であり、2、6、5はそれぞれ隣接列と比較するために選択されます。
[2 1 6 4 5 9]
交換後
[1 2 4 6 5 9]
4番目の偶数シリーズ
[1 2 4 6 5 9]
1つの交換
[1 2 4 5 6 9]
特定のコード:
public class main { / ** * @param argsコマンドライン引数 * / public static void main(string [] args){int [] numbers = new int [] {12,33,45,33,13,55,34,34,7,6}; main.oddeventsort(numbers); for(int i = 0; i <numbers.length; i ++){system.out.print(numbers [i]+""); }} private static void oddeventsort(int [] numbers){int temp; for(int i = numbers.length-1; i> numbers.length/2-1; i-){for(int j = 1; j <= i; j+= 2){if(j == numbers.length-1)break; if(numbers [j]> numbers [j+1]){temp = numbers [j];数字[j] = numbers [j+1];数字[j+1] = temp; }} for(int j = 0; j <= i; j+= 2){if(j == numbers.length-1)break; if(numbers [j]> numbers [j+1]){temp = numbers [j];数字[j] = numbers [j+1];数字[j+1] = temp; }}}}}}PS:このアルゴリズムはマルチコア時代に使いやすいと言われています
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。