该方法的基本思想是:
- 1.先从数列中取出一个数作为基准数。
- 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
- 3.再对左右区间重复第二步,直到各区间只有一个数。
package PaiXu; import java.util.Scanner; public class KuaiSuPaiXu { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int arr[]=new int [n]; for(int i=0;i<arr.length;i++){ arr[i]=sc.nextInt(); } paixu(arr,0,arr.length-1); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } } public static void paixu(int arr[], int low, int high){ //temp保存基准数的数据,i基准数开始向后遍历,j从数组最后一位往前遍历 int i,j,temp; if(low>high){ return ; } i=low; j=high; temp=arr[low]; while(i<j){ //先看右边,找出比基准数小的数的下标j while(arr[j]>=temp&&i<j){ j--; } //在看左边,找出比基准数大的下标i while(arr[i]<=temp&&i<j){ i++; } //交换arr[i],arr[j]的位置 if(i<j){ int t=arr[j]; arr[j]=arr[i]; arr[i]=t; } } arr[low]=arr[i]; arr[i]=temp; //基准数左边快排 paixu(arr,low,j-1); //基准数右边快排 paixu(arr,j+1,high); } }