排序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]);还有
# 1 楼答案
有几件事。当您声明节点[]已为空时,无需将其清空。BucketSort也不应该扩展节点,它应该包含节点对象的集合(例如数组)。remove方法不应该接受int[],而应该只接受指向要删除的索引的int
# 2 楼答案
好的,两个错误:
1-数组。移除(数组[i])???这是什么?数组没有方法remove,您不想从数组中删除该项,是吗?我想你可以去掉这条线
2.如果为数组中的每个元素创建一个bucket,这是一个怎样的bucket排序?创建的bucket应该少于元素(以某种方式对它们进行分组),对吗
# 3 楼答案
以下是我对设计的快速观察:
有两个不同的类:
Node
只代表单个节点(element
和next
),另一个类LinkedList
包含列表的头部。现在您可以在LinkedList
类上支持add
、remove
、search
等方法BucketSort
扩展Node
不是 一个好的课堂设计。你可能 想让他们保持独立 使BucketSort足够通用,可以对任何数据类型进行排序。将排序机制保存在单独的类中,并将LinkedList传递给它为什么
element
和next
受到保护?您可以将其更改为Private
由于您正在设计LinkedList API,因此遵循LinkedList支持的标准方法会更好、更简洁