Java Bucket一种对象

时间:2010-09-22 16:58:40

标签: java sorting

我正在尝试编写一个存储桶排序,我的计划是编写一个简单的Entry类和另一个带有main方法的类,并尝试操作一个列表数组。

我的入门级(班级节点):

public class Node {

    protected int element;
    protected Node next;

    public Node()
    {
        element = 0;
        next = null;
    }
    public Node getNext(Node n)
    {
        return next;
    }
    public void setNext(Node n)
    {
        n = next;
    }
    public void setElement(int e)
    {
        e = element;
    }
    public int getElement()
    {
        return element;
    }
    public void insert(int e)
    {
        e = element;

    }
}

我的水桶分类:

public class BucketSort extends Node {

    public void remove(int[] x)
    {
        x = null;
    }
    public static void bucketSort(int[] a)
    {
        int[] array = a;
        Node[] buckets = new Node[array.length];

        for (int i=0; i<array.length; i++)
        {
            buckets[i] = null; 
        } 
        for (int i=0; i<array.length; i++)
        {
            array.remove(array[i]);
            buckets[i].insert(array[i]);
        }


    }

}

我在array.remove(array [i])上遇到错误;同样。

3 个答案:

答案 0 :(得分:0)

一些事情。当您声明Node []存储桶已经为空时,不需要将其清零。 BucketSort也不应该扩展Node,它应该包含Node对象的集合(例如Array)。你的remove方法不应该接受一个int [],而只是一个指向要删除的索引的int。

答案 1 :(得分:0)

以下是我对设计的快速观察:

  1. 有两个不同的类:Node代表单个节点(elementnext),另一个类LinkedList代表列表的头部。现在,您可以在add类上支持removesearchLinkedList等方法。

  2. BucketSort延长Node不是 一流的设计。你可能 想让他们保持独立 使BucketSort足够通用,可以对任何数据类型进行排序。将Sorting机制保持在一个单独的类中,并将LinkedList传递给它。

  3. 为什么elementnext受到保护?您可以将其更改为Private

  4. 由于您正在设计LinkedList API,因此坚持使用LinkedList支持的标准方法会更好更清晰。

答案 2 :(得分:0)

好的,有两个错误:

1 - array.remove(array [i]); ???这是什么?数组没有方法删除,你不想从数组中删除项目,对吗?我想你可以删除这一行。

2 - 如果为数组中的每个元素创建一个存储桶,那么这是一个Bucket Sort?你应该创建比元素更少的桶(以某种方式对它们进行分组)吗?