SortTest.java



/** ソートのスピードの比較を実験 */
import java.util.*;
public class SortTest {

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

        int num = 1;
        int max = 10000000;
        String flag = null;
        try {
            flag = argv[0];
            num = Integer.parseInt( argv[1] );
        }
        catch( Exception e ) {
            System.err.println( "使用法:java SortTest [SsBbQqMmDdJj] 999999" );
            System.exit( -1 );
        }

        int[] array = makeRandomInteger( num, max );

        System.out.println( "ソート前のデータ:" );
        for( int i=0; i<num; i++ ) {
            System.out.println( array[i] );
        }

        Calendar cal = Calendar.getInstance();
        System.err.println( "ソート開始時刻:" 
                  + cal.get( Calendar.SECOND ) + ":"
                  + cal.get( Calendar.MILLISECOND ) );

        switch( flag.charAt(0) ) {
            case 'S':
            case 's':
                      SimpleSort.sort( array );
                      break;
            case 'B':
            case 'b':
                      BubbleSort.sort( array );
                      break;
            case 'Q':
            case 'q':
                      QuickSort.sort( array, 0, num-1 );
                      break;
            case 'M':
            case 'm':
                      MergeSort.sort( array, 0, num-1 );
                      break;
            case 'D':
            case 'd':
                      break;  //ソートの作業は何もしない
            case 'J':
            case 'j':
                      java.util.Arrays.sort( array ); //SDKのソート
                      break;
            default:
                      System.err.println(
                      "使用法:java SortTest [SsBbQqMmDdJj] 999999" );
                      System.exit( -1 );
        }

        cal = Calendar.getInstance();
        System.err.println( "ソート終了時刻:" 
                  + cal.get( Calendar.SECOND ) + ":"
                  + cal.get( Calendar.MILLISECOND ) );

        System.out.println( "ソート後のデータ:" );
        for( int i=0; i<num; i++ ) {
             System.out.println( array[i] );
        }
    }

  /** 指定された個数の乱数を発生するメソッド */
    public static int[] makeRandomInteger( int num, int max ){
        int[] array = new int[num];
        for( int i=0; i<num; i++ ) {
           array[i] = (int)( max * Math.random() );
        }
        return array;
    }
}