0
我有以下代碼:關於產品LSD基數排序
public class LSD{
public static int R=1<<8;
public static int bytesword=4;
public static void radixLSD(int a[],int l,int r){
int aux[]=new int[a.length];
for (int d=bytesword-1;d>=0;d--){
int i, j;
int count[]=new int[R+1];
for (j=0;j<R;j++) count[j]=0;
for (i=l;i<=r;i++)
count[digit(a[i],d)+1]++;
for (j=1;j<R;j++)
count[j]+=count[j-1];
for (i=l;i<=r;i++)
aux[count[digit(a[i],d)]++]=a[i];
for (i=l;i<=r;i++)
a[i]=aux[i-1]; // <-- Line 19
}
}
public static void main(String[]args){
int a[]=new int[]{3,6,5,7,4,8,9};
radixLSD(a,0,a.length-1);
for (int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static int digit(int n,int d){
return (n>>d)&1;
}
}
在運行時,它拋出以下異常:
java.lang.ArrayIndexOutOfBoundsException: -1
at LSD.radixLSD(LSD.java:19)
at LSD.main(LSD.java:29)
這是爲什麼發生?
這將有助於如果你標記哪一行是第19行。你知道,幫助我們幫助你。 – polygenelubricants 2010-05-31 06:38:21
我不使用IDE,所以我不能確定哪裏是第19行我在witing程序 – 2010-05-31 06:46:39
如果你不能計數到19你可能沒有準備好編寫排序例程。 – 2010-05-31 06:52:36