快速排序
快速排序 quick sort:
把要排序的数据分成两部分,通常先取第一个数a1与其他数比较,
把数据区分成两部分:比a1小的在a1前面,比a1大的,在a1后面,
再按这个方法分别对这两部分数据进行排序,最后得到整个排好序的数据列。
public static void main(String[] args) { int data[] = {6,5,8,1,3,3,0,21,10,9}; System.out.println("before sort:"); for(int i=0;i<data.length;i++){ System.out.print(data[i] + " "); } quickSort(data,0,data.length-1); System.out.println(); System.out.println("after sort:"); for(int i=0;i<data.length;i++){ System.out.print(data[i] + " "); } } public static void quickSort(int data[],int start,int end){ int index = 0; if(start<end){ index = sort(data,start,end); quickSort(data,start,index-1); quickSort(data,index+1,end); } } public static int sort(int data[],int start,int end){ int index = data[start]; while(start<end){ while(start<end && index<data[end]){ end--; } data[start]=data[end]; while(start<end && index>=data[start]){ start++; } data[end] = data[start]; } data[start]=index; return start; }