快速排序
首先找到一个关键词作为分段的参考,分成一边比这个参考都小,另一边都比参考都大,然后在递归分段,知道结束,快速排序就完成了
/**************************快速排序***************************************/
public static void qSort(int[] array,int left,int right){
if(left<right){
int rv = fenDuanSort(array, left, right);//分段
//递归 分别对这两段再进行分段排序
qSort(array,left,rv-1);
qSort(array,rv+1,right);
}
}
public static int fenDuanSort(int[] array,int left,int right){
int middle = array[left];
while(left<right){
while(left<right && array[right]>=middle){
right--;
}
if(left<right){
array[left++]=array[right];
}
while(left<right && array[left]<=middle){
left++;
}
if(left<right){
array[right--] = array[left];
}
}
array[left] = middle;
return left;
}
测试
public static void main(String[] args) {
int[] array = new int[]{3,0,9,5,1,55};
qSort(array,0,5);
for(int a : array){
System.out.print(a+" ");
}
}
结果
0 1 3 5 9 55