快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。简而言之就是“在数组中找一个支撑点(任意),经过一趟排序后,支撑点左边的数都要比支撑点小,支点右边的数都要比支撑点大!”
publicclassMain{publicstaticvoidmain(String[] args){int[] a =newint[10];for(int i =0; i < a.length; i++){
a[i]=(int)(Math.random()*100);}for(int i : a){
System.out.print(i +" ");}
System.out.println();quick(a,0, a.length -1);for(int i : a){
System.out.print(i +" ");}}publicstaticvoidquick(int[] c,int L,int R){int i = L;int j = R;//寻找支撑点int m = c[(L + R)/2];while(i <= j){//寻找比支撑点大的数while(m > c[i]){
i++;}//寻找比支撑点小的数while(m < c[j]){
j--;}if(i <= j){int t = c[i];
c[i]= c[j];
c[j]= t;
i++;
j--;}}if(L < j){quick(c, L, j);}if(i < R){quick(c, i, R);}}}