2009年8月30日 星期日

Java Quick Sort


public class JQuickSort {

  public static void main(String[] argv) {
    // JQuickSort qs = new JQuickSort(Integer.parseInt(argv[0]));
    JQuickSort qs = new JQuickSort(20);
    qs.start();
  }

  int[] a = null;

  public JQuickSort(int num) {
    a = new int[num];
    for (int i = 0; i < num; ++i) {
      int n = (int) (Math.random() * 9999);
      a[i] = n;
    }
  }

  int partition(int number[], int left, int right) {
    int i, j, s;
    s = number[right];
    i = left - 1;
    for (j = left; j < right; j++) {
      if (number[j] <= s) {
        i++;
        int tmp = number[i];
        number[i] = number[j];
        number[j] = tmp;
      }
    }
    int tmp = number[i + 1];
    number[i + 1] = number[right];
    number[right] = tmp;
    return i + 1;
  }

  private void printArray() {
    System.out.print("Array: ");
    for (int i = 0; i < a.length; ++i) {
      System.out.print(a[i] + " ");
    }
    System.out.println();
  }

  void quicksort(int number[], int left, int right) {
    int q;

    if (left < right) {
      q = partition(number, left, right);
      quicksort(number, left, q - 1);
      quicksort(number, q + 1, right);
    }
  }

  private void start() {
    printArray();
    quicksort(a, 0, a.length - 1);
    printArray();
  }

}

沒有留言: