快排中需要注意一点是,当选择最左边的值作为pivot时,向比较高位,j–。因为最后有次交换i位置,可能i直接就遍历到i==j。此时交换就产生了问题。
public class quickSort {
public static void main(String[] args) {
int [] ints = new int[]{3,2,4,1,5,8,6,7,10,15,14,12,13};
quickSort(ints, 0, ints.length-1);
for(int ss:ints){
System.out.println(ss);
}
}
static void quickSort(int[] input, int left, int right){
if(left>=right){
return ;
}
int i = left;
int j = right;
int start = input[left];
while(i<j){
while(input[j]>=start&&i<j){
j--;
}
while(input[i]<=start&&i<j){
i++;
}
if(i<j){
int tmp = input[i];
input[i] = input[j];
input[j] = tmp;
}
}
input[left]=input[i];
input[i]=start;
quickSort(input, left, i-1);
quickSort(input, i+1,right);
}
}