思路可参考:http://developer.51cto.com/art/201403/430986.htm
下面是我的JAVA实现:
package com.mtt.sort;
public class 快速排序 {
/**
* 快速排序思路:http://developer.51cto.com/art/201403/430986.htm
*/
public static void quickSort(int[] array,int left,int right){
if(left>=right) return;
int basic=array[left];//基准数
int i=left,j=right;//左右哨兵
int tmp;//用来交换的临时变量
while(i<j){
while(i<j&&array[j]>=basic){
j--;
}
while(i<j&&array[i]<=basic){
i++;
}
if(i<j){
tmp=array[i];
array[i]=array[j];
array[j]=tmp;
}
}
//哨兵i和哨兵j碰头后将基准数和i置换
array[left]=array[i];
array[i]=basic;
quickSort(array,left,i-1);
quickSort(array,i+1,right);
}
public static void printArray(int[] array){
for(int tmp:array){
System.out.print(tmp+" ");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array={5,1,3,2,7,9,10,34};
quickSort(array,0,array.length-1);
printArray(array);
}
}