//MySort.java  --- sample using java.util.Arrays.sort( )
// @CopyLeft by tsaiwn@cs.nctu.edu.tw
// Modified by xxxxyyyy(你的學號姓名)  ! 注意至少加入三個整數五個實數!!
import java.applet.*;
import java.util.*;
import java.io.*;
public class MySort extends Applet {
    static java.io.PrintStream cout=System.out;
    public static final String myName="你的學號姓名";
    public static void main(String argv[ ]) {
       MySort me = new MySort( );
       me.init( ); me.start( );
       me.test( );
       cout.println("Thank you and Bye!\nThe program:");
       me.prtProg( );  try{System.in.read( );}catch(Exception e){;} // to print myself
    }//main(
    public MySort( ) {  
    }//

    void prtProg( ) {  try{ new PrintMe( getClass( ) ); }catch(Exception e){;} }  ///*****

    void test( ) {
       cout.println("Test sorting...modified by " + myName);
       cout.println("Before sort Array a:");
       printAry(a);
       java.util.Arrays.sort(a);    // 可以寫全名  !!!!!!   java.util.*  裡面很多好東西 !
       cout.println("After sort:");
       printAry(a);
       reverse(a);
       cout.println("After Reverse it:");
        printAry(a);
      ////// 測試 sort 實數陣列(double array)
       cout.println("======\nBefore sort Array b:");
       printAry(b);
       Arrays.sort(b);   // 這樣也可以, 因為已經有 import java.util.*;
       cout.println("After sort:");
       printAry(b);
       // cout.println("After Reverse it:");
       // reverse(b);   // 須再寫一個  void reverse(double 陣列) { }
       // cout.println("After Reverse it:");
    }// test(

 ////// template function 無法用於 基礎型別的陣列(Primitive Array)
    void printAry(int y[ ]) {
       for(int x: y) {   // 陣列 y[ ] 中每個 x
          cout.print(" "+x);
       }//for
       cout.println( );  // 換一列   NewLine
    }// printAry(

    void printAry(double y[ ]) {
       int i=0;     // index 索引, 註標(Subscript)
       double x;   // 以下寫法是傳統的 Loop 迴圈; 注意 Java 的 array 陣列長度用 .length
       for(i=0; i < y.length; ++i) {   // 陣列 y[ ] 中每個 x
          x = y[i];
          cout.print(" "+x);
       }//for
       cout.println( );  // 換一列   NewLine
    }// printAry(

    void reverse(int x[ ]) {   // 把 array 左右對調(顛倒過來 !)
        int i=0, k = x.length - 1;
        int tmp;
        for( ;; ) {
            if(i >= k) return;    //  i 跑到 k 右邊去了就是做完了 !
            tmp=x[i]; x[i]=x[k]; x[k]=tmp;
            i++; --k;    // i 往右邊,  k  往左邊; 總有一天會交錯而過 ! 
        }// for
    }//
    // 須再寫一個  void reverse(double 陣列) { }
    int a[ ] = { 33, 88, 55, 66, 123, 99, 22, 77};
    double b[ ] = { 38.49, 55.66, 66.5, 25
        , 168, 99.5, 85.25, 13.38, 77.5};
} // class
/******
D:\jtest> path "c:\Program Files\Java\jdk1.6.0_23\bin";%path%

D:\jtest> javac MySort.java

D:\jtest> java MySort
Test sorting...modified by 你的學號姓名
Before sort Array a:
 33 88 55 66 123 99 22 77
After sort:
 22 33 55 66 77 88 99 123
After Reverse it:
 123 99 88 77 66 55 33 22
======
Before sort Array b:
 38.49 55.66 66.5 25.0 168.0 99.5 85.25 13.38 77.5
After sort:
 13.38 25.0 38.49 55.66 66.5 77.5 85.25 99.5 168.0
Thank you and Bye!
The program:
D:\jtest>
******/
