【发布时间】:2010-11-20 01:17:38
【问题描述】:
我对以下代码有三个问题:
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个元素起作用,而且复杂度很差吗?
代码的重点是对元素列表进行排序 - 将它们放入数组中,然后放入桶中,然后将它们从桶中再次放入数组中?
这就是我难以理解的问题,您将如何修改该方法以便可以传递包含另一个类的对象而不是整数的数组?
【问题讨论】: