|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
[java] quicksort
ciao!
sto cercando di implementare il quick sort sia la versione normale che quella randomizzata. La prima mi viene senza problemi, la senconda invece non mi da i risultati che volevo e non caspisco il perchè... mi date un consiglio? [i]private static int randomPartition(int[] array,int start, int end){ int index = (int)Math.random() * end; scambio(array,start,index); return partition(array,start,end); } private static int partition(int[] array,int start, int end){ int pivot = array[start]; int i = start - 1; int j = end + 1; while (true) { while (true) { j--; while (array[j] > pivot) j--; i++; while (array < pivot) i++; if (i < j) scambio(array, i, j); else return j; } } } public static void quicksort(int[] array, int start, int end){ if(start < end){ int pivot=randomPartition(array,start,end); quicksort(array,start,pivot); quicksort(array,pivot+1,end); } } dove sbaglio?
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
up
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2003
Messaggi: 3852
|
Che errore ti dà?
__________________
Cerco fotocamera con buono zoom!! CLICCA! ° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) ° |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
nessun errore in compilazione...semplicemente non ordina...
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
se non uso il pivot preso random però funziona... non capisco il prechè.
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#6 |
|
Registered User
Iscritto dal: Aug 2006
Messaggi: 305
|
A prima vista direi che
Codice:
private static int randomPartition(int[] array,int start, int end){
int index = (int)Math.random() * end;
scambio(array,start,index);
return partition(array,start,end);
}
|
|
|
|
|
|
#7 |
|
Registered User
Iscritto dal: Aug 2006
Messaggi: 305
|
...e di conseguenza fare
scambia(array,start,start+index); Prova così |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
no nulla... sempre il solito problema!
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2005
Città: Pisa
Messaggi: 1047
|
no no ferma i lavori!! ora va!!
ma mi potresti spiegare se puoi il perchè...
__________________
Vendite concluse ottimamente con: Bastian UMTS, Tiscaliniano. --------------------------------------------------------- 1) Macbook Pro Core 2 Duo 2,16Ghz - 2GB di RAM - HD 160GB - Glossy Widescreen - 2°Gen 2) iPhone 3G - 8GB Black 3) Ipod Shuffle Blu 1GB 4) iMac 27" QuadCore i7 |
|
|
|
|
|
#10 |
|
Registered User
Iscritto dal: Aug 2006
Messaggi: 305
|
Questo è l'array che devi ordinare:
OOOOOOOOOOOOOOOOOOOOOOO Tu scegli un pivot random e controlli solo una parte(OOOO) del vettore ricorsivamente: OOOOOOOOOOOOOOXXXXXXXXXX Poi rifai la stessa cosa ancora e ancora. Arriverai ad esempio a dover considerare il seguente array(OOO): XXXXXOOOOOOOOOXXXXXXXXXXX A questo punto START indicherà l'inizio dell'array OOO ed END ne indicherà la fine. Se tu generi un numero random da 0 ad END andrai a controllare anche una parte di array che non ti interessa (le XXX a sinistra) Allora devi generare un numero minore di END-START e sommarlo a START. In tal modo controlli solamente l'array di OOO. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:18.



















