1. 程式人生 > >我見過最通俗易懂的快速排序過程講解,轉自《坐在馬桶上看演算法:快速排序》

我見過最通俗易懂的快速排序過程講解,轉自《坐在馬桶上看演算法:快速排序》

如果以上C程式碼看不懂,請看下面java程式碼:

public static int Partition(int[] a,int p,int r){
  int x=a[r-1];
  int i=p-1;
  int temp;
  for(int j=p;j<=r-1;j++){
    if(a[j-1]<=x){
      // 交換(a[j-1],a[i-1]);
      i++;
      temp=a[j-1];
      a[j-1]=a[i-1];
      a[i-1]=temp;
    }
  }
  //交換(a[r-1,a[i+1-1]);
  temp=a[r-1];
  a[r-1]=a[i+1-1];
  a[i+1-1]=temp;
  return i+1;
}
public static void QuickSort(int[] a,int p,int r){
  if(p<r){
    int q=Partition(a,p,r);
    QuickSort(a,p,q-1);
    QuickSort(a,q+1,r);
  }
}
//main方法中將陣列傳入排序方法中處理,之後列印新的陣列
public static void main(String[] stra){
  int[] a={7,10,3,5,4,6,2,8,1,9};
  QuickSort(a,1,10);
  for (int i=0;i<a.length;i++)
  System.out.println(a[i]);
}