salve
il codice di oggi e un quicksort, il codice misembra a posto l unico problema e' che non riesco ad ottenere il vettore ordinato, sembra che il mio pc ci impieghi un eternita a darmi i risultati, comunque posto il codice e se qualcuno puo provare a farlo girare sul proprio pc e vedere come va sarebbe un aiuto
ciao
il codice di oggi e un quicksort, il codice misembra a posto l unico problema e' che non riesco ad ottenere il vettore ordinato, sembra che il mio pc ci impieghi un eternita a darmi i risultati, comunque posto il codice e se qualcuno puo provare a farlo girare sul proprio pc e vedere come va sarebbe un aiuto
ciao
C:
/* ordinamento quicksort di un vettore di interi
il codice divide in due blocchi il vettore, gli elementi
a sinistra e gli elementi a destra del pivot (il pivot"perno"
qui e dato dalla media) e poi fa lo stesso
con i due sottoblocchi e cosi via fino ad ordinare il vettore*/
#include <stdio.h>
#define N 10
int v[N]; //vettore di interi
void quick (int,int);
void scambia (int*,int*);
int main(void)
{
int i;
for (i=0;i<N;i++)
{
printf("\nInserire un intero n:%d ",i);
scanf("%d",&v[i]);
}
quick (0,N-1);
for (i=0;i<N;i++)
printf("\n%d",v[i]);
putchar ('\n');
}
void quick (int sx, int dx) //funzione ricorsiva quicksort
{
int i,j,media;
media = (v[sx]+v[dx])/2;
i = sx;
j = dx;
do {
while (v[i]<media)
i++;
while (media<v[j])
j--;
}
while (j>=i);
if (sx<j)
quick (sx,j);
if (i<dx)
quick (i,dx);
}
void scambia (int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}