2017-05-14 3 views
-1

J'implémente une classe HeapSort afin qu'elle commande la liste entière en une seule fois à l'aide d'une méthode addAll et stocke les éléments commandés dans heap dans la liste. C'est le programme du pilote pour la classe HeapSort. Pourquoi ne puis-je pas créer un nouvel objet HeapSort? Ce que je veux dire par là, quand j'essaye de créer l'objet de heaport, j'obtiens des erreurs en disant que "HeapSort est un type brut, les références au type générique HeapSort devraient être paramétrées." et aussi des erreurs comme "constructeur HeapSort (Integer []) est indéfini." Qu'est-ce que cela signifie? pourquoi ne puis-je faire cet objet?Création d'un objet dans une classe de pilote pour une implémentation de tri de tas

/*demonstrates the HeapSort class so it orders the 
* entire list at once using addAll method and re-stores 
* the elements ordered in heap into the list*/ 
public class HeapDemo { 

    public static void main(String[] args) { 
     //create a list of integer objects 
     Integer[] data = {4, 1, 6, 2, 5, 3}; 
     //display elements in list before sorting 
     System.out.println("Elements in the list before sorting:"); 
     for(int i=0;i<data.length;i++) 
      System.out.print(data[i] + " "); 
      System.out.println(); 

      //create object for HeapSort class 
      HeapSort first = new HeapSort(data); 

      //display elements in list after sorting 
      System.out.println("\nElements in the list after sorting:"); 
      for(int i=0;i<data.length;i++) 
       System.out.print(data[i] + " "); 
      System.out.println(); 
    } 

} 

Voici ma classe HeapSort:

/** 
* HeapSort sorts a given array of Comparable objects using a heap. 
* 
* @author Java Foundations 
* @version 4.0 
*/ 
public class HeapSort<T> 
{ 
    /** 
    * Sorts the specified array using a Heap 
    * 
    * @param data the data to be added to the heapsort 
    */ 

    ArrayHeap heap; 

    public void HeapSort(T[] data) 
    { 
     ArrayHeap<T> temp = new ArrayHeap<T>(); 

     addAll(data); 
     // copy the array into a heap 
     /* 
     * for (int i = 0; i < data.length; i++) 
      temp.addElement(data[i]);*/ 

     // place the sorted elements back into the array 
     int count = 0; 
     while (!(temp.isEmpty())) 
     { 
      data[count] = temp.removeMin(); 
      count++; 
     } 
    } 
    //accepts a list of elements and stores all elements into heap 
    private void addAll(T[] list) { 
     for(int i=0;i<list.length;i++) 
      heap.addElement(list[i]); 
    } 
} 
+0

Quelle erreur obtenez-vous? – Mureinik

+0

Sans aucun type de message d'erreur, nous ne pouvons pas vraiment dire. –

+0

@Mureinik désolé j'ai mis à jour que maintenant –

Répondre

1

Vous ne disposez pas d'un constructeur qui prend un tableau. Les noms de méthodes devraient commencer par une lettre minuscule et ne devraient certainement pas être nommés de la même manière que la classe. Les constructeurs n'ont pas de types de retour.

public void HeapSort(T[] data) 

Pas un constructeur.

+0

oui vous avez raison, j'ai changé cela maintenant. Merci. –

+0

mais maintenant mon erreur dit Exception dans le fil "principal" java.lang.NullPointerException \t à HeapSort.addAll (HeapSort.java:38) \t à HeapSort. (HeapSort.java:21) \t à HeapDemo.main (HeapDemo.java:18) –

+0

pourquoi cela se produit-il lorsque je lance le programme du pilote? –