プログラム"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(); } } } }
実行結果の例です.
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
26.1.6.23 支援ツール | 26.1.6.24 単純な整列法 | 26.1.6.25 要素値の交換 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Thu, 02 Sep 2004 18:54:48 JST (1793d) |