Я пытаюсь создать алгоритм сортировки по Radix, и у меня есть Array List of Array Lists.
Radix Sort добавляет элементы в список «внешнего» массива в зависимости от значения числа «один», «десятки», «сотни» и т. Д. Каждый «внутренний» список массивов соответствует разряду цифр 0, 1, 2, 3 ... 9.
Значение переменной "base" равно 10, поскольку имеется 10 цифр (0-9)
Вот декларация:
ArrayList<ArrayList<Integer>> digits = new ArrayList<ArrayList<Integer>>(base); //arraylist that can hold 10 elements to sort elements according to digits 0-9
for(int i=0; i <digits.size(); i++){
digits.add(i, new ArrayList<Integer>()); //make an arraylist for each element inside the digits array list, this will hold the numbers that are being sorted
}
Однако позже, когда я пытаюсь добавить целые числа в правильный список «внутреннего» массива, я не могу сделать это, поскольку пытаюсь добавить целое число в место типа ArrayList. Я также получаю индекс из связанной ошибки.
while(!(lastDigit)) //if last digit has not been reached
{
lastDigit = true;
for(int k=0; k < array.length; k++) //array contains the numbers we are sorting
{
number = k / digitPlace; //digitPlace starts off as 1 to first sort by one's place and is then later multiplied by 10
int index = number % base; //get digit from correct place
digits.add(index, k);//line with the ERROR; add the element in the correct place (according to it's digit)
if(number > 0 && lastDigit)
{
lastDigit = false;
}
}
Способ решения этой проблемы состоит в том, что я приводил целое число к типу ArrayList, но это означало бы, что я бы добавил Array List во внутренний список массивов, а это не то, что мне нужно. Я хочу добавить int в правильный "внутренний" ArrayList.