我正在尝试编写一个存储桶排序,我的计划是编写一个简单的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])上遇到错误;同样。
答案 0 :(得分:0)
一些事情。当您声明Node []存储桶已经为空时,不需要将其清零。 BucketSort也不应该扩展Node,它应该包含Node对象的集合(例如Array)。你的remove方法不应该接受一个int [],而只是一个指向要删除的索引的int。
答案 1 :(得分:0)
以下是我对设计的快速观察:
有两个不同的类:Node
代表单个节点(element
和next
),另一个类LinkedList
代表列表的头部。现在,您可以在add
类上支持remove
,search
,LinkedList
等方法。
BucketSort
延长Node
不是
一流的设计。你可能
想让他们保持独立
使BucketSort足够通用,可以对任何数据类型进行排序。将Sorting机制保持在一个单独的类中,并将LinkedList传递给它。
为什么element
和next
受到保护?您可以将其更改为Private
。
由于您正在设计LinkedList API,因此坚持使用LinkedList支持的标准方法会更好更清晰。
答案 2 :(得分:0)
1 - array.remove(array [i]); ???这是什么?数组没有方法删除,你不想从数组中删除项目,对吗?我想你可以删除这一行。
2 - 如果为数组中的每个元素创建一个存储桶,那么这是一个Bucket Sort?你应该创建比元素更少的桶(以某种方式对它们进行分组)吗?