У меня есть три вопроса о следующем коде:Пытаясь понять Bucket сортировочный код
static void funct(int[] list) {
final int N = 20;
java.util.ArrayList[] buckets = new java.util.ArrayList[N];
for(int i = 0; i< list.length; i++) {
int key = list[i];
if(buckets[key] = null)
buckets[key].add(list[i]);
}
int k = 0
for(int i = 0; i <buckets.length; i++) {
if(buckets[i] != null) {
for(int j = 0; j< buckets[i].size(); j++)
list[k++] = (Integer)buckets[i].get(j);
}
}
}
алгоритм имеет существенный недостаток, является то, что он будет работать только до 20 элементов и что он имеет плохую сложность?
Точка кода предназначена для сортировки списка элементов - они помещаются в массив, а затем помещаются в ведра, после чего их снова помещают из ведер в массив.
Это то, на что я нахожусь в тупике, как бы вы изменили метод, чтобы передать массив, содержащий объекты другого класса вместо целых чисел?