快速排序,但是一直报如下错误;
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
代码如下:
/**
* @Description 快速排序
**/
public class QuickSort {
public static void main(String[] args) {
int[]a = {2,1,5,7,9,0,6,4,3,8};
doSort(a,0,a.length-1);
System.out.println(a);
}
private static void doSort(int[] a, int lo, int hi) {
int j = partition(a,lo,hi);
doSort(a,lo,j-1);
doSort(a,j+1,hi);
}
private static int partition(int[] a, int lo, int hi) {
int i = lo,j = hi+1;
int v = a[lo];
while (true){
while (a[++i]<v) if(i==hi)break;
while (a[--j] >v) if(j==lo) break;
if(i>=j) break;
swap(a,i,j);
}
swap(a,lo,j);
return j;
}
private static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}