JAVAにおける基本的な4つの並べ替え(発泡体の並べ替え、選択順序、挿入順序、クイックソート)

8265 ワード

泡の並べ替え
/****は行った後、隣の二つの数を順番に比較して、大きな数を後ろに置いてください。循環すると、現在の最後尾に現在の最大値が得られます。*/
public class orderBy1 {

    public static void main(String[] args) {
        int score[] = {67, 69, 75, 88};

        for(int i =0;i < score.length - 1;i++)
        {
            for(int j = 0;j <  score.length - 1-i;j++)// j    0,
            {
                if(score[j] < score[j+1])
                {
                    int temp = score[j];
                    score[j] = score[j+1];
                    score[j+1] = temp;
                }
            }

        }
        for (int i = 0; i out.println(score[i]);
        }

    }

}
並べ替えを選択
順序付けと泡並べ替えの違いに注意してください。泡並べ替えは、隣接する2つの順序が合法的でない要素の位置を順次交換することによって、現在の最小要素を適切な位置に配置します。一方、選択順序付けは、巡回ごとに現在の最小(大)要素の位置を覚えています。最後に交換操作だけで、適切な位置に配置できます。
/***は、配列から一番小さい要素を見つけ、最初の位置の要素と交換します。*2番目の位置から、最小要素と2番目の位置の要素が入れ替わります。*array.length-1の小さな要素を選択するまで、残りの最大要素は自動的に最後のビットになります。*/
public class orderBy2 {

    public static void main(String[] args) {
        int arr[] = {67, 69, 75, 88};
        int minIndex, temp;
        for (int i = 0; i < arr.length - 1; i++) {
            minIndex = i;                         //                 
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[minIndex]) {     //      


·  minIndex = j;                 //         
                }
            }

            //          (   ),             ,               
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        for (int i = 0; i out.println(arr[i]);
        }

    }
}
並べ替えの挿入
/****は、第二の要素から、現在の要素を前の対応する位置に挿入し、現在の要素iと前の要素を秩序正しい配列に形成します。比較規則:通常:第1の要素から始まり、現在の要素iが秩序配列中の要素jより小さい場合、この要素から秩序配列を順に後のビットに移動し、現在の要素iをこの要素j位置に配置する。(挿入)簡易:順序配列の最後の要素から開始し、現在の要素iがこの要素jより小さい場合、現在の要素とこの要素を交換する。
public class orderBy3 {

    public static void main(String[] args) {
        int arr[] = {67, 69, 75, 88};
        int pos,temp;
        for(int i=1;ilength;i++){
            pos = i;
            while(pos!=0&&arr[pos]pos-1]){
                temp = arr[pos];
                arr[pos] = arr[pos-1];
                arr[pos-1] = temp;
                pos--;
            }
        }
        for (int i = 0; i length ; i++) {
            System.out.println(arr[i]);
        }
    }
}
高速並べ替え(カクテルの並べ替え)
//****カクテルは泡立ち順のアップグレード版で、この並べ替えは左から右へ最大値を探してから、右から左へ最小値を探して、カクテルのように混ぜて左右に循環します。場合によっては、発泡秩序より優れていて、シーケンス(67,69,75,88)を例にとって、カクテル順序は2回(昇順・降順の各回)のシーケンスにアクセスするだけで並べ替えができますが、発泡体順序を使用する場合は4回必要です。
public class orderBy4 {
    public static void main(String[] args) {
        int arr[] = {67, 69, 75, 88};
        //              ,             ...
        boolean changed;
        for(int i = 0;i < arr.length/2;i++){
            changed = false;
            //    ,       ,       .                
            for(int j = i;j < arr.length-1-i;j++){

                if(arr[j]>arr[j+1]) {
                    swap(arr,j,j+1);
                    changed =true;
                }
            }
            if(!changed){
                break;
            }
            for(int j = arr.length-1-i; j > i; j--){

                if(arr[j]1]) {
                    swap(arr,j,j-1);
                    changed = true;
                }
            }
            if(!changed){
                break;
            }
        }
        for (int i = 0; i out.println(arr[i]);
        }
    }
    public static void swap(int[] arr, int pos1, int pos2){
        int temp = arr[pos1];
        arr[pos1] = arr[pos2];
        arr[pos2] = temp;
    }
}