快速排序的思想:
对于快速排序,首先要解决的就是轴值的问题,最简单的方法就是选择第一个元素作为轴值,这样可以保证不出现正序或反序的问题。核心思想是:以轴值为基准,将带排序的记录分割成独立的两部分,左边都是小于等于轴值的记录,右边都是大于等于轴值的记录,然后在对两部分分别重复上述过程,直到整个序列有序!
public class Parti {private static void partition(int[] r,int low,int hight){ int i,j,index; if (low>hight){ return; } i=low; j=hight; index=r[i]; while (i<j){ while (i<j&&r[j]>=index){ j--; } if (i<j){ r[i++]=r[j]; } while (i<j&&r[i]<index){ i++; } if (i<j){ r[j--]=r[i]; } r[i]=index; partition(r,low,i-1); partition(r,i+1,hight); } } private static void sort(int[] r){ partition(r,0,r.length-1); } public static void main(String[] args){ int a[]={12,25,36,63,21,32,56,11}; System.out.println("初始化数组为:"); for (int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } partition(a,0,a.length-1); System.out.println("\n排序后的数组为:"); for (int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } }}
运行结果: