Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [JAVA] insertion sort

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86

    [JAVA] insertion sort

    Salve ragazzi ho un array di tipo Dipendente che contiene le informazioni su ogni dipendente come nome, cognome, stipendio. Sto cercando di ordinare l'array in base allo stipendio di ogni dipendente tramite insertion sort ma è da oggi pomeriggio che non ne vuole sapere di funzionare. Quando mando in run il metodo insertionSort mi stampa l'arrray cosi come è definito in qeullo di partenza. Dove sto sbagliando?

    codice:
    public void insertionSort()
    {
    int in, out;
    
    for(out=1; out< dip.length; out++)   
     {
     double temp1 = dip[out].getStipendio();   
     in = out;           
     while(in>0 && dip[in-1].getStipendio() >= temp1) 
       {
       double temp2 = dip[in].getStipendio();
       temp2 = dip[in-1].getStipendio();     
       --in;           
       }
     double temp2 =dip[in].getStipendio();
     temp2 = temp1;         
     }
    
    for(int z = 0 ; z < dip.length ; z++)
    {
    	System.out.println(dip[z].getStipendio());
    }
    } // end insertionSort()

  2. #2
    Nel codice, prendendone per buona la correttezza logica, non vedo nessun punto in cui, dopo gli opportuni controlli, sposti gli elementi dell'array per cui è ovvio che l'array che stampi è quello di partenza.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ho dato un'occhiata al codice, ma sembra che tu abbia fatto molta confusione con l'implementazione dell'algoritmo.
    Prova ad utilizzare il metodo seguente:

    codice:
    public void sort(Dipendente[] dipendenti) {
    	for (int i = 1; i < dipendenti.length; i++) {
    		int j = i;
    		Dipendente dip = dipendenti[i];
    		while ((j > 0) && (dipendenti[j - 1].getStipendio() > dip.getStipendio())) {
    			dipendenti[j] = dipendenti[j - 1];
    			j--;
    		}
    		dipendenti[j] = dip;
    	}
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86
    mitico satifal! Funziona correttamente ora! Ti sei guadagnato un posto in paradiso Grazie mille per l'aiuto !

  5. #5
    Comunque Java offre strumenti molto potenti e flessibili riguardo all'ordinamento. Una soluzione migliore e sicuramente più elegante sarebbe quella di utilizzare l'interfaccia Comparable. Ad esempio nel tuo caso potresti far implementare alla classe Dipendente tale interfaccia ed implementare il metodo compareTo(). Una cosa del genere:

    codice:
    public class Dipendente implements Comparable {
    
    	private double stipendio;
    	...
    
    	public double getStipendio() {
    		return this.stipendio;
    	}
    
    	...
    
    	public int compareTo(Object obj) {
            if (this.stipendio == ((Dipendente) obj).stipendio)
                return 0;
            else if ((this.stipendio) > ((Dipendente) obj).stipendio)
                return 1;
            else
                return -1;
    	}
    
    }
    A questo punto per ordinare il tuo array di oggetti di tipo Dipendente ti basterà utilizzare l'istruzione:

    codice:
    Arrays.sort(dipendenti);
    dove dipendenti sarà l'array di oggetti Dipendente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86
    Si, sapevo già di questa metologia perchè l'ho utilizzata in un esercizio del mio libro però ora mi serve implementare gli algoritmi fondamentali in java perchè mi servono in ambito "scolastico". Ora sto implementando l'ordinamento di shell. Grazie cmq delle precisazioni!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.