我见过最通俗易懂的快速排序过程讲解,转自《坐在马桶上看算法:快速排序》

https://blog.csdn.net/vayne_xiao/article/details/53508973###;


 
 


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]);
}

猜你喜欢

转载自blog.csdn.net/qq_32218457/article/details/79727591