Ошибка индексации границ в Radix Sort с заполненными массивами - PullRequest
0 голосов
/ 01 октября 2019

Я запускаю свою сортировку по основанию на случайно заполненном массиве из 10000 элементов. Мой отладчик говорит, что я = 9999 и не достигаю того 10000 элементов, который, я думаю, именно поэтому я получаю IOB. Кто-нибудь может пролить свет? Ошибка попадает в строку 34, где я вставил стрелку (<----) </p>

Отладчик, 1 = 9999

package Program01;

import java.util.*;
import java.io.*;

public class RadixSort {

    // The first function for Radix sort is for the max value
    static int getTheMax(int BigBoy[], int n){
        // LittleBoy creates a place holder for the large number
        int LittleBoy = BigBoy[0];
        for (int i = 0; i < n; i++) {
            if (BigBoy[i] > LittleBoy)
                LittleBoy = BigBoy[i];
        }
        return LittleBoy;
    }
    // now that we have the max, we will need to sort the array.

    static void countSort(int array[], int n, int exp){
        int output[] = new int[n];
        int i;
        int count[] = new int[10];
        Arrays.fill(count,0);

        // number of occurrences is placed in count[]
        for (i = 0; i < n ; i++) {
            count[(array[i]/exp)%10]++;
        }
        for(i = 1; i < 10; i++){
            count[i] = count[i - 1];
        }

        for (i = n - 1; i >= 0 ; i--) { <--------
            output[count[(array[i]/exp)%10] - 1] = array[i];
            count[(array[i]/exp)%10]--;
        }

        for(i = 0; i < n; i++)
            array[i] = output[i];
    }

    static void sorting(int array[], int n){
        int m = getTheMax(array, n);
        for (int i = 0; i > 0 ; i++) {
        }

        for (int exp = 1; m/exp > 0 ; exp *= 10) {
            countSort(array, n, exp);
        }
        System.out.println(Arrays.toString(array));
    }

}
...