SimpleSort2.java



/** ソートのアルゴリズム(選択法)再帰呼び出し使用 */
public class SimpleSort2 {

  /** 確認用のサンプルデータ */
    private static int[] test
                          = { 10, 75, 24, 32, 98,
                              72, 88, 43, 60, 35,
                              54, 62,  2, 12, 82,
                            };

  /** 処理の開始のメソッド(確認用) */
    public static void main( String[] argv ) {

   //ソートの作業
        sort( test );

   //ソートの結果の確認
        for( int i=0; i<test.length; i++ ) {
            System.out.println( (i+1) + ":" + test[i] );
        }
    }

  /** ソートの処理を実行するメソッド */
    public static void sort( int[] array ) {

         maxN( array, 0 );
    }

  /** 与えられた配列の n番目以降から最大値を探し、
      最大値とn番目の値を交換する */
    public static void maxN( int[] array, int n ) {

        int max = array[n];
        int maxIndex = n;
        for( int i=n+1; i<array.length; i++ ) {
             if( array[i] > max ) {
                 max = array[i];
                 maxIndex = i;
             }
        }
        array[maxIndex] = array[n];
        array[n] = max;

      //再帰呼び出し
        if( n < array.length - 2 )
            maxN( array, n+1 );
    }
}