ホームページ  >  記事  >  Java  >  Java のいくつかの並べ替えアルゴリズムのアイデアとコード例を共有する

Java のいくつかの並べ替えアルゴリズムのアイデアとコード例を共有する

伊谢尔伦
伊谢尔伦オリジナル
2017-04-29 13:39:021195ブラウズ

バブルソート

基本的な考え方: 並べ替える一連の数値において、現在並べ替えられていない範囲内のすべての数値について、隣接する 2 つの数値を上から下に順番に比較して調整します。これにより、大きい数値が沈み、小さい数値が沈みます。数値が上がります。
つまり、2 つの隣接する数値が比較され、それらの順序が順序要件と逆であることが判明した場合は常に、それらは交換されます。
1回目の比較と並べ替えの結果: 最大のデータが最大のインデックスに配置されます
2回目の比較と並べ替えの結果: 1回目で最大のデータが最大のインデックスに配置されたため、データは今回比較されるのは、配列の要素数より-1少なく、2番目に大きいデータも2番目に大きいインデックスにランク付けされます
3回目の比較と並べ替えの結果:2回目とほぼ同じですが、今回は比較するデータが配列の要素数より 2 少ないです
4 回目: 3 少ない...
要約すると、大規模な並べ替えでは、配列内のデータを小さいものから順に並べる必要があります。比較の合計数は配列の長さの -1 倍になります。比較の数が増えると、毎回比較されるデータが減少します。

public class Demo4 {  
  
    public static void main(String[] args) {  
    int number[]={49,38,65,97,76,13,27,14,10};  
    for(int i=0;i<number.length-1;i++){  
        for(int j=0;j<number.length-1-i;j++){  
        if(number[j]>number[j+1]){  
            int tmp=number[j];  
            number[j]=number[j+1];  
            number[j+1]=tmp;  
        }  
        }  
        for (int j = 0; j < number.length; j++) {  
        System.out.print(number[j]+"\t");  
          
        }  
        System.out.println("排序"+(i+1)+"次后的结果");  
          
    }  
  
    }  
  
}

選択ソート

基本的な方法:
インデックス0から開始し、次の要素を順番に比較し、小さいものを最初に配置します。1回目は最小値が最小インデックスに表示され、2回目は最小値を見つけます。 2 番目に小さい値。
具体的にどうやって実装するの?
まず、最初のラウンドでは、インデックス 0 のデータが、それより小さいデータが見つかるまで、後続の各インデックスのデータと順番に比較されます。この時点で、この小さなデータがインデックスの元のデータと置き換えられます。 0、その後、この置き換えられたデータは、元のインデックス位置の後ろのインデックス上のデータと比較され続けます。つまり、最初のラウンドの後、インデックス 0 のデータはこの配列上の最小のデータでなければなりません
2 番目のラウンドが続きます。後続のデータと比較するのは 1 番目のインデックス上のデータです。このとき、比較に参加するデータは 1 つ少ないため、j の値は次のようになります。サイクルの 1 ラウンドで +1 になります。これは、j の添え字 +1 が開始されるときです。

public class Demo5 {  
  
    public static void main(String[] args) {  
    int number[]={49,38,65,97,76,13,27,14,10};  
    for(int i=0;i<number.length;i++){  
        for(int j=i+1;j<number.length;j++){  
        if(number[i]>number[j]){  
            int tmp=number[i];  
            number[i]=number[j];  
            number[j]=tmp;  
        }  
        }  
        for (int j = 0; j < number.length; j++) {  
        System.out.print(number[j]+"\t");  
        }  
        System.out.println("第"+(i+1)+"次排序后的结果");  
          
    }  
      
  
    }  
  
}

挿入ソート

挿入ソートとは、現在ソート対象となっている要素を、既にソート済みのリストに挿入することです。 非常に鮮明な例は、右手でトランプをつかみ、左手で持っている分類されたトランプの中にそれを挿入することです。

挿入ソートの最悪の実行時間は O(n2) であるため、最適なソート アルゴリズムではありません。
入力配列がすでにソートされている場合、挿入ソートは最適に行われ、その実行時間は入力サイズの一次関数になります。
入力配列が逆順にソートされている場合、最悪のケースが発生します。平均的なケースは最悪のケースと同じであり、その時間コストは Θ(n2) です。
りー

以上がJava のいくつかの並べ替えアルゴリズムのアイデアとコード例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。