codice:
void exchange(char **list, int i, int j,int size) {
char tmp[size];
strcpy(tmp,*(list+i));
strcpy(*(list+i),*(list+j));
strcpy(*(list+j),tmp);
}
int partition(char **list, int p, int r,int size) {
int i=p, j=r, x;
char pivot[size];
x=rand()%(r-p+1)+p;
exchange(list,x,p,size);
strcpy(pivot,*(list+p));
while(i<j) {
while(j>p && (strcmp(*(list+j),pivot)>0)) j--;
while(i<r && (strcmp(*(list+i),pivot)) <= 0) i++;
if(i<j) exchange(list,i,j,size);
}
exchange(list,p,j,size);
return j;
}
void quicksort(char **list, int p, int r, int size) {
int q;
if(p<r) {
q=partition(list,p,r,size);
quicksort(list,p,q-1,size);
quicksort(list,q+1,r,size);
}
}
Questa è l'implementazione del quicksort..
Questa la chiamata da modificare nel main
codice:
quicksort(list,0,length-1,size);
Grazie oregon