En önemli yarıçap sıralaması için kodu yazdım ancak satırda IndexBoundsException hatası alıyorum: arr [i] = arr1.get (i) ;. Ve şimdi neyin yanlış olduğunu bilmiyorum çünkü mantık bana uygun görünüyor.En Önemli Sayısal Radix Sıralama Java içinde
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;
}
Bunu nereden hata alıyorum olmalıdır yanlıştır? Yığın izini gösterin ve bize neden olan satırı gösterin (satır numaralarını göremediğimizden). Ayrıca, * hata ayıklama * denediniz mi? – Andreas
Bende. İç içe geçmiş döngüde hata oluştuğunu düşünüyorum: (int j = 0; j
user1979029