我正在使用快速排序編寫代碼,但看不到它能夠正常工作。我該如何修復我的代碼?用隨機數快速排序填充
我已經聲明我的數組大小爲20,並填充隨機整數。然後我打電話給我的sort
方法做快速排序。 show
方法只是打印輸出。仍然我的代碼根本不起作用。
我給快速排序整個代碼:在線程 「主」 java.lang.ArrayIndexOutOfBoundsException
public class JavaApplication3 {
public static void main(String[] args) {
QuickSort B = new QuickSort();
int[] snum = new int [20];
for(int index = 0; index < snum.length; index++){
snum[index]= (int) (Math.random());
}
B.sort(snum);
B.show(snum);
}
}
class QuickSort{
public static void sort(int [] a){
quicksort(a, 0, a.length -1);
}
private static void quicksort(int[] a, int lo, int hi){
if(hi <= lo) return;
int j = partition(a, lo, hi);
quicksort(a, lo, j-1);
quicksort(a, j+1, hi);
}
private static void exch(int [] a, int i, int j){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
private static int partition(int[] a, int lo, int hi){
int i= lo;
int j = hi+1;
int pivot = a[lo];
while(i<=j){
while(a[i] < pivot){
i++;
}
while(a[j] > pivot){
j--;
}
if(i <= j){
exch(a, i, j);
i++;
j--;
}
}
if (lo < j)
quicksort(a, lo, j);
if (i < hi)
exch(a, i, j);
return j;
}
public static void show(int[]a){
for(int i=0; i<a.length;i++)
System.out.print(a[i] + " ");
System.out.println();
}
例外: 20在javaapplication3.QuickSort.partition(JavaApplication3.java:61) 在javaapplication3.QuickSort.quicksort(JavaApplication3.java:43)在 javaapplication3.QuickSort.sort(JavaApplication3.java:39)在 javaapplication3.JavaApplication3.main(JavaApplication3.java:29)的Java 結果:1
什麼不工作,爲什麼你使用靜態方法? –
@Aツ我得到IndexOutofBound,但我已經聲明瞭我的數組的大小。或者我錯了? –
請寄出_actual error_ ---整個回溯。整個工作就是告訴你哪裏出了問題,在哪裏。 –