Oppure

Loading
07/02/07 14:16
execretor
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!
aaa
08/02/07 2:23
pierotofy
void q_sort(int numbers[], int ileft, int iright)
{
  int l_hold = ileft;
  int r_hold = iright;
  int pivot = numbers[ileft];
  int t;
  while (ileft < iright)
  {
    while ((numbers[iright] >= pivot) && (ileft < iright))
      iright--;
    if (ileft != iright)
    {
      t = numbers[ileft]; numbers[ileft] = numbers[iright]; numbers[iright] = t;
      ileft++;
    }
    while ((numbers[ileft] <= pivot) && (ileft < iright))
      ileft++;
    if (ileft != iright)
    {
      t = numbers[iright]; numbers[iright] = numbers[ileft]; numbers[ileft] = t;
      iright--;
    }
  }
  numbers[ileft] = pivot;
  pivot = ileft;
  ileft = l_hold;
  iright = r_hold;
  if (ileft < pivot)
    q_sort(numbers, ileft, pivot-1);
  if (iright > pivot)
    q_sort(numbers, pivot+1, iright);
}
void quickSort(int numbers[], int array_size)
{
  q_sort(numbers, 0, array_size - 1);
}


Fonte: en.wikipedia.org/wiki/…
Ultima modifica effettuata da pierotofy 08/02/07 2:24
Il mio blog: piero.dev
08/02/07 11:10
execretor
Sono andato a vedere su wikipedia e ho visto che è spiegato molto bene.
Grazie, mi hai salvato la vita
aaa
07/04/07 11:13
lorelapo
void swap(int *p, int *p2)
{
    int ptem=*p;
    *p=*p2;
    *p2=ptem;
}
void q_sort(int *vet, int sx, int dx)
{
    if(sx>=dx)return;
    int i,last=sx;
    swap(&vet[sx],&vet[(sx+dx)/2]);
    for(i=sx+1;i<=dx;i++)
        if(vet[sx]>vet[i])
            swap(&vet[i],&vet[++last]);
    swap(&vet[last],&vet[sx]);
    
    q_sort(vet,sx,last-1);
    q_sort(vet,last+1,dx);
}
void quicksort(int *vet, int length)
{
    q_sort(vet,0,length);
}


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()
aaa
14/04/07 11:52
ozmosis
Ultima modifica effettuata da ozmosis 17/04/07 11:06
aaa
14/04/07 11:53
ozmosis
Wikipedia e Google sono i migliori amici di chi usa il pc...seriamente...
aaa
14/04/07 13:42
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:
Ultima modifica effettuata da lorelapo 14/04/07 13:42
aaa
16/04/07 11:57
ozmosis
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)...
aaa