2010-09-22 3 views
0

Я пытаюсь написать сортировку в виде ковша, и мой план состоит в том, чтобы написать простой класс Entry и другой класс с основным методом и попытаться манипулировать массивом списков.Java Bucket Сортировка объектов

Моя запись Класс (класс Node):

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; 

    } 
} 

Мой Bucket Сортировать Класс:

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 (массив [я]); также.

+0

Какая ошибка? Покажите нам трассировку стека, пожалуйста, – Woot4Moo

+0

Вниз проголосовали, потому что автор удалил вопрос и сделал всю тему дискуссией о чем-то, что мы не можем видеть. – drekka

ответ

0

Несколько вещей. Когда вы объявляете, что Node [] ведра его уже пустые, нет необходимости его обнулять. Также BucketSort не должен расширять узел, он должен содержать коллекцию объектов Node (например, Array). Ваш метод remove не должен принимать int [], а просто int, который укажет на индекс, который должен быть удален.

0

Вот мои быстрые наблюдения конструкции:

  1. У вас есть два различных класса: Node который только представляет собой единый узел (element и next) и еще один класс LinkedList который содержит главу списка. Теперь вы можете поддерживать такие методы, как add, remove, search на классе LinkedList.

  2. BucketSort расширение Node не хороший класс дизайн. Вы, вероятно, хотите сохранить их независимыми и сделать BucketSort достаточно общим для сортировки по любому типу данных. Держите механизм сортировки в отдельном классе и передайте ему LinkedList.

  3. Почему именно element и next защищено? Вы можете изменить их на Private.

  4. Поскольку вы разрабатываете API LinkedList, было бы лучше и чище придерживаться стандартных методов поддержки LinkedList.

0

ОК, две ошибки:

1 - array.remove (массив [I]); ??? что это? массив не имеет метода удаления, и вы не хотите удалить элемент из массива, не так ли? Я думаю, вы можете просто удалить эту строку.

2 - Если вы создаете ведро для каждого элемента массива, как это сортировка ведра? Вы должны создать меньше ведер, чем элементы (группируя их каким-то образом)?

Смежные вопросы