26.1.6.31 クイックソート

クイックソートのプログラムです.

class SortQ{
  static int n=10;
  static int a[ ]=new int[n];
  public static void main(String argv[ ]){
      Alib.prepare(a);           // 値を乱数で準備
      Alib.show(a); Alib.ln(); 
      sortq(0, a.length-1);      // 整列
      Alib.show(a); Alib.ln();
  }
  static void sortq(int top, int tail){
     if(top < tail){
       int i=top, j=tail, x=a[i]; // x(先頭値)を分割のキーとする
       while(i<=j){
         while(a[i]< x) i=i+1;
         while(a[j]> x) j=j-1;
         if(i <=j){
            Alib.swap(a, i, j);   // 違反している要素同志を交換
            i=i+1; j=j-1;
         }
       }   
       sortq(top, j);   // 前の部分を整列
       sortq(i, tail);  // 後の部分を整列
     }
  } 
}

fileSortQ.java (iso-2022-jp)