有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

排序Java Bucket排序对象

我正在尝试编写一个bucket排序,我的计划是编写一个简单的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]);
        }


    }

}

我确实在数组中遇到了一个错误。移除(数组[i]);还有


共 (3) 个答案

  1. # 1 楼答案

    有几件事。当您声明节点[]已为空时,无需将其清空。BucketSort也不应该扩展节点,它应该包含节点对象的集合(例如数组)。remove方法不应该接受int[],而应该只接受指向要删除的索引的int

  2. # 2 楼答案

    好的,两个错误:

    1-数组。移除(数组[i])???这是什么?数组没有方法remove,您不想从数组中删除该项,是吗?我想你可以去掉这条线

    2.如果为数组中的每个元素创建一个bucket,这是一个怎样的bucket排序?创建的bucket应该少于元素(以某种方式对它们进行分组),对吗

  3. # 3 楼答案

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

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

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

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

    4. 由于您正在设计LinkedList API,因此遵循LinkedList支持的标准方法会更好、更简洁