- 首先 摩拜大神的 帖子
http://blog.51cto.com/ahalei/1365285
2 我自己的实现
// 快速排序:1 选待排序列的第一个元素为基准;2 将待排序列分为左右两个序列 ; 3 再将左右序列进行划分
public void divided(int[] arr, int left, int right) {
if(left<right){
int base = arr[left];
int i=left;
int j =right+1;
while(true){ // 保证哨兵i 和哨兵 j 不断交换
while(i<right && arr[++i]<base);
while(j>left && arr[--j]>base);
if(i<j){
swop(arr, i, j);
}else {
break;
}
}
// 基数归位
swop(arr, left, j);
divided(arr,left,j-1);
divided(arr, j+1, right);
}
}
public void quickSort(int[] arr){
divided(arr,0,arr.length-1);
}
// 交换方法
public static void swop(int[] arr,int i,int j){
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}