PDA

View Full Version : Problemi con il Quicksort


lullaby89
30-12-2008, 16:19
:help: :help: :help:
sono una novizia dell'informatica.
devo consegnare un progettino in Visual Basic... Si tratta di un banale array da ordinare con quicksort.
Il progettino è fatto (ho trovato il codice già bello e fatto..;) ), però devo anche spiegarlo al prof!!!:help:
Ci sono alcuni passaggi che mi sono oscuri...
per esempio:

Do
Do While elenco(sup) >= middle
sup = sup - 1
If sup <= inf Then Exit Do
Loop
If sup <= inf Then
elenco(inf) = middle
Exit Do
End If
elenco(inf) = elenco(sup)
inf = inf + 1
Do While elenco(inf) < middle
inf = inf + 1
If inf >= sup Then Exit Do
Loop
If inf >= sup Then
inf = sup
elenco(sup) = middle
Exit Do
End If
elenco(sup) = elenco(inf)
Loop

perchè scrive Do e poi a capo do while? Non ho mai usato do in VB fino ad ora.. e nemmeno loop...
Aiutatemi...

bio82
30-12-2008, 16:39
:help: :help: :help:
sono una novizia dell'informatica.
devo consegnare un progettino in Visual Basic... Si tratta di un banale array da ordinare con quicksort.
Il progettino è fatto (ho trovato il codice già bello e fatto..;) ), però devo anche spiegarlo al prof!!!:help:
Ci sono alcuni passaggi che mi sono oscuri...
per esempio:



perchè scrive Do e poi a capo do while? Non ho mai usato do in VB fino ad ora.. e nemmeno loop...
Aiutatemi...

do è per iniziare un ciclo (loop indica dove il ciclo va ripetuto)...se indentassi il codice capiresti che i 2 do all'inizio sono uno dentro l'altro (difatti poche riche dopo il secondo do trovi il suo loop)...

praticamente se non metti il while dopo il do, devi impostare tu le condizioni per cui uscire dal loop (ogni tanto trovi degli exit do)...


Do
Do While elenco(sup) >= middle
sup = sup - 1
If sup <= inf Then Exit Do
Loop
If sup <= inf Then
elenco(inf) = middle
Exit Do
End If
elenco(inf) = elenco(sup)
inf = inf + 1
Do While elenco(inf) < middle
inf = inf + 1
If inf >= sup Then Exit Do
Loop
If inf >= sup Then
inf = sup
elenco(sup) = middle
Exit Do
End If
elenco(sup) = elenco(inf)
Loop


così è indentato giusto, e difatti si vede a che livello lavorano i do all'interno del principale e i vari if..

bio

cionci
30-12-2008, 18:19
http://www.hwupgrade.it/forum/showthread.php?t=1649196