关于以下代码,我有三个问题:
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个元素,而且代码的complexity?
发布于 2009-08-16 16:04:28
回答你的问题:
&)获得最重要的位元(因此可以计算出桶)。然后,您可以使用比特直接选择桶。桶排序的思想是使用基排序元素对输入进行初始传递,然后在小桶上使用不同的排序(或迭代基排序),这可能比较小,排序更容易,或者所有桶的连接(例如返回数组)可以使用较小的complexity.发布于 2009-08-16 19:23:56
这是一个很好的家庭作业问题。许多问题都是主观的,而且几乎可以肯定地取决于你的课堂作业。
我建议你自己试一试,因为课堂上的课比这里的任何答案都能让你更好地了解老师在寻找什么。
此外,如果在教室外的任何人看到这一点,答案将是使用内置数组排序,并扔掉这些垃圾!
https://stackoverflow.com/questions/1284598
复制相似问题