一、解决方案
pv = 最后元素为基准点元素;
j:找比基准点元素小的,一旦找到就和i交换;
i:++,最后与pv交换,即为分区的位置。
递归调用,将基准点左边和基准点右边的元素分区排序,直到l>=h。
二、代码
public class QuickSort {public static void main(String[] args){int[] a = {5,3,7,2,9,8,1,4};quick(a,0,a.length-1);}//递归实现public static void quick(int[] a,int l,int h){if(l>=h){return;}int p = partition(a,l,h);quick(a,l,p-1);quick(a,p+1,h);}//一趟快排private static int partition(int[] a,int l,int h){int pv = a[h];int i = l;for (int j = l; j < h; j++) {if(a[j]<pv){swap(a,i,j);i++;}}swap(a,h,i);System.out.println(Arrays.toString(a));return i;}public static void swap(int[] a,int i,int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}}
