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
C/C++ - quicksort
Forum - C/C++ - quicksort

Avatar
execretor (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/10/2006

Segnala al moderatore
Postato alle 15:16
Mercoledì, 07/02/2007
qualcuno mi può dare il codice dell'ordinamento
quicksort??
io ho fatto solo bubble-sort, inserzione e selezione. Questo non l'ho mai sentito nominare!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 3:23
Giovedì, 08/02/2007
Codice sorgente - presumibilmente C++

  1. void q_sort(int numbers[], int ileft, int iright)
  2. {
  3.   int l_hold = ileft;
  4.   int r_hold = iright;
  5.   int pivot = numbers[ileft];
  6.   int t;
  7.   while (ileft < iright)
  8.   {
  9.     while ((numbers[iright] >= pivot) && (ileft < iright))
  10.       iright--;
  11.     if (ileft != iright)
  12.     {
  13.       t = numbers[ileft]; numbers[ileft] = numbers[iright]; numbers[iright] = t;
  14.       ileft++;
  15.     }
  16.     while ((numbers[ileft] <= pivot) && (ileft < iright))
  17.       ileft++;
  18.     if (ileft != iright)
  19.     {
  20.       t = numbers[iright]; numbers[iright] = numbers[ileft]; numbers[ileft] = t;
  21.       iright--;
  22.     }
  23.   }
  24.   numbers[ileft] = pivot;
  25.   pivot = ileft;
  26.   ileft = l_hold;
  27.   iright = r_hold;
  28.   if (ileft < pivot)
  29.     q_sort(numbers, ileft, pivot-1);
  30.   if (iright > pivot)
  31.     q_sort(numbers, pivot+1, iright);
  32. }
  33. void quickSort(int numbers[], int array_size)
  34. {
  35.   q_sort(numbers, 0, array_size - 1);
  36. }


Ultima modifica effettuata da pierotofy il 08/02/2007 alle 3:24


Il mio blog: https://piero.dev
PM Quote
Avatar
execretor (Normal User)
Newbie


Messaggi: 17
Iscritto: 26/10/2006

Segnala al moderatore
Postato alle 12:10
Giovedì, 08/02/2007
Sono andato a vedere su wikipedia e ho visto che è spiegato molto bene.
Grazie, mi hai salvato la vita

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 13:13
Sabato, 07/04/2007
Codice sorgente - presumibilmente C++

  1. void swap(int *p, int *p2)
  2. {
  3.     int ptem=*p;
  4.     *p=*p2;
  5.     *p2=ptem;
  6. }
  7. void q_sort(int *vet, int sx, int dx)
  8. {
  9.     if(sx>=dx)return;
  10.     int i,last=sx;
  11.     swap(&vet[sx],&vet[(sx+dx)/2]);
  12.     for(i=sx+1;i<=dx;i++)
  13.         if(vet[sx]>vet[i])
  14.             swap(&vet[i],&vet[++last]);
  15.     swap(&vet[last],&vet[sx]);
  16.    
  17.     q_sort(vet,sx,last-1);
  18.     q_sort(vet,last+1,dx);
  19. }
  20. void quicksort(int *vet, int length)
  21. {
  22.     q_sort(vet,0,length);
  23. }



Quello della libreria standard è più meno così che funziona ce l'ho sul mio K&R, solo che quello della libreria richiede due puntatore alle funzioni per il confronto e lo scambio. Cambiano i nomi, per esempio non ti semplifica il tutto come abbiamo fatto io e Piero con quicksort() e nella libreria il mio q_sort() è qsort()

PM Quote
Avatar
ozmosis (Member)
Newbie


Messaggi: 7
Iscritto: 18/03/2007

Segnala al moderatore
Postato alle 13:52
Sabato, 14/04/2007

Ultima modifica effettuata da ozmosis il 17/04/2007 alle 13:06
PM Quote
Avatar
ozmosis (Member)
Newbie


Messaggi: 7
Iscritto: 18/03/2007

Segnala al moderatore
Postato alle 13:53
Sabato, 14/04/2007
Wikipedia e Google sono i migliori amici di chi usa il pc...seriamente...

PM Quote
Avatar
lorelapo (Ex-Member)
Expert


Messaggi: 355
Iscritto: 28/02/2007

Segnala al moderatore
Postato alle 15:42
Sabato, 14/04/2007
Una persona veramente seria sa rendersi conto che non siano le uniche risorse esistenti, ozmosis non sarai certo perfetto perchè li sai usare, internet è di tutti.:alert:

Ultima modifica effettuata da lorelapo il 14/04/2007 alle 15:42
PM Quote
Avatar
ozmosis (Member)
Newbie


Messaggi: 7
Iscritto: 18/03/2007

Segnala al moderatore
Postato alle 13:57
Lunedì, 16/04/2007
Testo quotato

Postato originariamente da lorelapo:

Una persona veramente seria sa rendersi conto che non siano le uniche risorse esistenti, ozmosis non sarai certo perfetto perchè li sai usare, internet è di tutti.:alert:



Non riesco a leggere la riga in cui dico di essere perfetto. Non intedevo dire questo. Intendevo risaltare il valore di due motori di ricerca così importanti sotto tutti i punti di vista. E poi, non ho nemmeno scritto di "saperli usare" (poi mi spieghi che significa)...

PM Quote