Java BucketSort

时间:2010-09-24 01:11:28

标签: java

我相信你可能从CompSci学生那里得到了很多,我尝试过搜索,但我看起来与我能找到的其他任何东西都有很多不同。无论如何,这是我的类,它应该对一个整数数组进行排序(然后在将来被修改为对对象进行排序,但是ints现在会这样做。)

我的目标是创建一个基本上是一行桶的arrayList。然后每个桶都是一个链表。我觉得我在正确的轨道上,但是编译器不喜欢我最后一行代码,所以我的想法已经用完了。

这是一个更新。这就是我现在所拥有的,但我仍然认为它不会起作用

public void sorter(){
    int highest_int = 0;

    for(int i=0; i<entries.length; i++){
        if (highest_int < entries[i])
        highest_int = entries[i];
        }

ArrayList<LinkedList<Integer>> row = new ArrayList<LinkedList<Integer>>();  
LinkedList<Integer> column = new LinkedList<Integer>();

    while (highest_int>0){
        row.add(column);
        highest_int--;
    }   

    for(int i=0; i<entries.length; i++){
        int j = entries[i];
        column.add(0, j);
        row.set(j, column);
    }



}

2 个答案:

答案 0 :(得分:0)

编译器“不喜欢”您的代码,因为add()的{​​{1}}方法没有返回任何内容(具有LinkedList返回类型)。因此,它不能用作void方法的参数。基本上,set()修改了调用它的对象,但不会将该对象作为值返回。

我认为最简单的改变我认为会使你的代码编译成:

add()

除此之外,我不清楚你在这里想要实现的目标。我根本没有看到任何类似的东西。

答案 1 :(得分:0)

编译问题是column.add()返回void。

更大的问题是每个存储桶使用相同的LinkedList。您需要在其中一个for循环的每次迭代中创建一个新的LinkedList。