快排中需要注意一点是,当选择最左边的值作为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); } }