2010-09-22 2 views
0

J'essaye d'écrire un tri de seau et mon plan est d'écrire une classe d'entrée simple et une autre classe avec une méthode principale et essayer de manipuler un tableau de listes.Seau Java Sorte d'objets

Mon entrée classe (classe 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; 

    } 
} 

Mon godet Trier Classe:

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]); 
     } 


    } 

} 

je reçois une erreur à array.remove (tableau [i]); ainsi que.

+0

quelle est l'erreur? Montrez-nous la trace de la pile s'il vous plaît – Woot4Moo

+0

Down voté parce que l'auteur a supprimé la question et a fait de l'ensemble du fil une discussion de quelque chose que nous ne pouvons pas voir. – drekka

Répondre

0

Quelques petites choses. Lorsque vous déclarez que le nœud [] est déjà vide, il n'est pas nécessaire de l'annuler. De plus, BucketSort ne devrait pas étendre le noeud, il devrait contenir une collection d'objets Node (Array par exemple). Votre méthode remove ne doit pas accepter un int [] mais simplement un int qui pointe vers l'index à supprimer.

0

Voici mes observations rapides de la conception:

  1. ont deux classes différentes: Node qui représente un peu le nœud unique (element et next) et une autre classe LinkedList qui contient la tête de la liste. Vous pouvez maintenant prendre en charge des méthodes telles que add, remove, search dans la classe LinkedList.

  2. BucketSort extension Node n'est pas une bonne conception de classe. Vous avez probablement besoin de pour les garder indépendants et rendre BucketSort générique assez pour trier sur n'importe quel type de données. Conservez le mécanisme de tri dans une classe distincte et transmettez-lui le LinkedList. Pourquoi les codes element et next sont-ils protégés? Vous pouvez les modifier en Private. Étant donné que vous concevez une API LinkedList, il est préférable de s'en tenir aux méthodes standard LinkedList.

0

ok, deux erreurs:

1 - array.remove (array [i]); ??? Qu'est-ce que c'est? tableau n'a pas de méthode à supprimer et vous ne voulez pas supprimer l'élément du tableau, n'est-ce pas? Je pense que vous pouvez faire simplement supprimer cette ligne.

2 - Si vous créez un compartiment pour chaque élément d'un tableau, il s'agit d'un tri par seau. Vous devriez créer moins de seaux que d'éléments (en les regroupant d'une manière ou d'une autre), n'est-ce pas?