Здравствуйте. У меня проблемы с реализацией метода сортировки в Java.Я полагаю, что проблема связана с двумя последними циклами, которые у меня есть в методе.Я получаю исключение ArrayIndexOutOfBounds: 8. Я полагаю, что это происходит от моего второго до последнего цикла for, когда в индексе 5 значение равно 8, но я не уверен, как решить эту проблему.Любая помощь приветствуется.Спасибо!
В моем коде k - самое высокое значение во входном массиве.
Код:
public static void main(String[] args) {
int [] arrayOne = {0,1,1,3,4,5,3,0};
int [] output = Arrays.copyOf(arrayOne, arrayOne.length);
System.out.println(Arrays.toString(arrayOne));
countingSort(arrayOne, output, 5);
System.out.println(Arrays.toString(output));
}
public static void countingSort(int[] input, int[] output , int k){
int [] temp = Arrays.copyOf(input, k+1);
for (int i = 0; i <= k; i++){
temp[i] = 0;
}
for (int j = 0; j <= input.length - 1; j++){
temp[input[j]] = temp[input[j]] + 1;
}
for (int i = 1; i <= k; i++){
temp[i] = temp[i] + temp[i-1];
}
for (int j = input.length; j >= 1; j--){
output[temp[input[j]]] = input[j];
temp[input[j]] = temp[input[j]] - 1;
}
}