Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    40

    [Java] Implementazione QuickSort con ArrayList

    Salve a tutti,
    devo creare un programma che ordini una sequenza di oggetti (nel caso specifico numeri) tramite l'algoritmo quicksort, sul quale poi dovrò anche fare una serie di apprezzamenti per quanto riguarda nello specifico il tempo di esecuzione, il numero di scambi ecc.

    Per il momento cmq mi interessa sapere cosa ci sia di errato in questa parte del codice, relativa al metodo di ordinamento ricorsivo vero e proprio:
    codice:
    import java.util.*;
    public class QuickSort
    {
    
    		public void qSort(ArrayList S)
    		{
    		if (S.size()<=1) return;
    		Integer p=S.size()-1;
    		ArrayList L=new ArrayList();
    		ArrayList G=new ArrayList();
    		ArrayList E=new ArrayList();
    		while (!S.isEmpty())
    		{
    			if (((Comparable)S.get(S.size()-1)).compareTo(p)<0)
    				L.add(L.size(),S.remove(S.size()-1));
    			else if (((Comparable)S.get(S.size()-1)).compareTo(p)==0)
    				E.add(E.size(),S.remove(S.size()-1));
                            else G.add(G.size(),S.remove(S.size()-1));
    		}
    		qSort(L);
                    qSort(G);
    		while (!L.isEmpty())
    			S.add(S.size(),L.remove(0));
    		while (!E.isEmpty())
    			S.add(S.size(),E.remove(0));
    		while (!G.isEmpty())
    			S.add(S.size(),G.remove(0));
    		return;
    		}
    }
    L'errore lanciato in esecuzione, utilizzando per esempio il seguente main di prova, mi rimanda alla riga 21 della classe QuickSort quindi a qSort(G):
    codice:
    import java.util.*;
    public class QuickProva
    {
           public static void main(String[] args)
    	{
    		ArrayList<Integer> A=new ArrayList<Integer>();
    		A.add(8);
    		A.add(23);
    		A.add(1);
    		A.add(34);
    		A.add(5);
    		A.add(8);
    		A.add(6);
    		A.add(5);
    		System.out.println("Array iniziale: "+A);
    		QuickSort p=new QuickSort();
                    p.qSort(A);
    		System.out.println("Array ordinato: "+A);
    	}
    }
    Sapreste spiegarmi il perchè?

    Altra cosa: come si chiama nella libreria di Java la classe contenente un timer da poter inserire all'interno del codice che restituisca quindi il tempo di esecuzione di una determinata parte di esso?
    Grazie!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    Altra cosa: come si chiama nella libreria di Java la classe contenente un timer da poter inserire all'interno del codice che restituisca quindi il tempo di esecuzione di una determinata parte di esso?
    codice:
    long start = System.currentTimeMillis();
    //...
    //..
    //.
    System.out.println("tempo di esecuzione: " + (System.currentTimeMillis() - start));

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.