Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Algoritmo di ordinamento di un vettore contenente Stringhe?
Forum - Java - Algoritmo di ordinamento di un vettore contenente Stringhe?

Avatar
bogos (Normal User)
Newbie


Messaggi: 6
Iscritto: 23/05/2011

Segnala al moderatore
Postato alle 13:11
Venerdì, 10/06/2011
Ciao ragazzi! Stavo progettando un programma che utilizza l'algoritmo di ordinamento per selezione per ordinare una lista di nomi in ordine alfabetico è li passavo come parametro un arry di oggetti String. l'algoritmo funziona benissimo ma in seguito ho voluto memorizzare tali nomi in un Vector anzi che in un arry per poter usufruire dei sui metodi. Ho provato a creare una classe sovraccaricata del metodo selectionSort() ma ho notato che me li ordina in modo ordinato.
//--------------------------------------------------------------------------------
Di seguito vi pubblico il metodo che contiene il bug. Grazie in anticipo!!
Codice sorgente - presumibilmente Java

  1. public static void InsertionSort(Vector vettore)
  2.         {
  3.                 int min;
  4.                 String temp;
  5.              for(int index=0;index<vettore.size()-1;index++)
  6.              {
  7.                  min  = index;
  8.                  for (int scan=index+1;scan<vettore.size();scan++)
  9.                  {
  10.                         if ( ((Comparable) vettore.elementAt(scan)).compareTo(vettore.elementAt(min))<0)
  11.                                 min=scan;
  12.                         //---------------------------
  13.                         temp = (String) vettore.elementAt(min);
  14.                         vettore.setElementAt(vettore.elementAt(index), min);
  15.                         vettore.setElementAt(temp, index);
  16.                        
  17.                  }
  18.              }
  19.         }
  20. //----------------------------------------------------
  21. //metodo main
  22. //----------------------------------------------------
  23. public static void main(String[] args) throws IOException, ClassNotFoundException {
  24.                 // TODO Auto-generated method stub
  25.  
  26.                
  27.                 Vector vector = new Vector();
  28.                 vector.add("z");
  29.                 vector.add("a");
  30.                 vector.add("c");
  31.                 vector.add("b");
  32.                 vector.add("r");
  33.                 vector.add("d");
  34.                 vector.add("f");
  35.                
  36.  
  37.                 Cavia.InsertionSort(vector);
  38.                
  39.                 for(int count=0; count<vector.size();count++)
  40.                 {
  41.                         String ssd = (String) vector.elementAt(count);
  42.                         System.out.println(ssd);
  43.                 }
  44.         }
  45.  
  46. }


PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 15:14
Venerdì, 10/06/2011
Non ho capito cosa intendi per "classe sovraccaricata del metodo selectionSort". Vuoi dire un metodo in overload rispetto a selectionSort? Ma in questo caso non potrebbe chiamarsi InsertionSort. Forse volevi dire un metodo con overload verticale in una classe derivata? Però avrei la stessa osservazione di prima da fare.
Inoltre non riesco a capire cosa significa che te li ordina in modo ordinato (mi sembra l'unico modo possibile di ordinare).

PM
Avatar
bububs (Normal User)
Expert


Messaggi: 253
Iscritto: 11/03/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 16:47
Venerdì, 10/06/2011
Cancella il metodo insertionSort ke non serve a nulla e nel main fai semplicemente così:
Codice sorgente - presumibilmente Java

  1. Vector vector = new Vector();
  2.         vector.add("z");
  3.         vector.add("a");
  4.         vector.add("c");
  5.         vector.add("b");
  6.         vector.add("r");
  7.         vector.add("d");
  8.         vector.add("f");
  9.         Collections.sort(vector);   //  Ordina direttamente il vettore
  10.         for(int count=0; count<vector.size();count++){
  11.             String ssd = (String) vector.elementAt(count);
  12.             System.out.println(ssd);
  13.         }


PM