Java中的最高有效数字基数排序

Java中的最高有效数字基数排序,java,radix-sort,Java,Radix Sort,我为最重要的基数排序编写了代码,但我在行中不断得到一个IndexBoundsException错误:arr[I]=arr1.get(I);。现在我不知道是什么错了,因为我觉得这个逻辑是正确的 public static int[] msdRadixSort(int[] arr) { if (arr == null) { throw new IllegalArgumentException("The array is null!"); } //searc

我为最重要的基数排序编写了代码,但我在行中不断得到一个IndexBoundsException错误:arr[I]=arr1.get(I);。现在我不知道是什么错了,因为我觉得这个逻辑是正确的

  public static int[] msdRadixSort(int[] arr) {
    if (arr == null) {
        throw new IllegalArgumentException("The array is null!");
    }
    //search through to find msd
    int temp = arr[0];
    for (int i = 0; i < arr.length; i++) {

        if (Math.abs(temp) <= Math.abs(arr[i])) {
            temp = arr[i];
        }
    }
    //find the length of the msd
    int k = 1;
    while (!(temp / 10 == 0)) {
        temp = temp / 10;
        k++;
    }
    ArrayList<Integer> arr1 = new ArrayList<Integer>(arr.length);
    for (int i = 0; i < arr.length; i++) {
        arr1.add(arr[i]);
    }
    msdRadixSort(arr1, k);
    System.out.println(arr1);
    for (int i = 0; i < arr.length; i++) {
        arr[i] = arr1.get(i);
    }
    return arr;
}
公共静态int[]msdRadixSort(int[]arr){
如果(arr==null){
抛出新的IllegalArgumentException(“数组为null!”);
}
//通过搜索查找msd
int temp=arr[0];
对于(int i=0;i如果(Math.abs(temp)嵌套循环不正确,则应为

for (int j = 0; j < bucket.length; j++) {
    for (int i = 0; i < bucket[j].size(); i++) {
        arr.add(bucket[j].get(i));
    }
}
for(int j=0;j
从哪里得到错误?显示堆栈跟踪并向我们显示导致错误的行(因为我们看不到行号)。此外,您尝试过调试代码吗?我尝试过。我认为错误发生在嵌套的for循环上:for(int j=0;jarr.add(i)1
,您应该执行
arr.add(bucket[j].get(i))