26.1.6.24 単純な整列法

プログラム"Sort0"では最小値だけが最終位置に来ましたね.あとはこれを繰り返して,残りの部分の最小値をa[1]に,そのまた残りの部分の最小値をa[2]に,…というぐあいに進めれば整列ができます.

class Sort1{
    static int n=10;
    static int a[ ]=new int[n];
    public static void main(String argv[ ]){
	int i, j, k;
	Alib.prepare(a);
	Alib.show(a, -1, "*"); Alib.ln();
	for(i=0; i < a.length-1; i=i+1){   //「a[i]〜最後」の最小値の場所をkに求める.
	    k=i;
	    for(j=i+1; j < a.length; j=j+1){
		if(a[j] < a[k]) k=j;
		Alib.swap(a, i, k);
		Alib.show(a, i, "*"); Alib.ln();
	    }
	}
    }
}

fileSort1.java (iso-2022-jp)

実行結果の例です.

34 28 84 91 16 57 49 70 19 63 *16 28 84 91 34 57 49 70 19 63 16 *19 84 91 34 57 49 70 28 63 16 19 *28 91 34 57 49 70 84 63 16 19 28 *34 91 57 49 70 84 63 16 19 28 34 *49 57 91 70 84 63 16 19 28 34 49 *57 91 70 84 63 16 19 28 34 49 57 *63 70 84 91 16 19 28 34 49 57 63 *70 84 91 16 19 28 34 49 57 63 70 *84 91