快速排序算法是对冒泡排序算法的一种改进,基本思路如下

  1. 先从数列中取出一个数作为基准数

  2. 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边

  3. 再对左右区间重复第二步,直到各区间只有一个数

代码实现

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