Come dal titolo devo creare un programma che utilizzi la procedura del quicksort per ordinare un array bidimensionale di stringhe.
il codice che ho creato è questo:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void swap (char **a,int i, int j) {
char temp[1001];
strcpy(temp,a[i]);
strcpy(a[i],a[j]);
strcpy(a[j],temp);
}
int distribuzione(char **a, int sx, int px, int dx) {
int i; int j; char x[1001];
if (px != dx){
swap (a,px,dx);
}
strcpy(x,a[dx]);
i=sx-1;
for(j=sx;j<dx;j++){
if ((strcmp(a[j],x)==0) || ((strcmp(a[j],x)<0)))
{
i=i+1;
swap(a,i,j);
}
}
i++;
swap(a,i,dx);
return i;
}
void quicksort( char **a, int sx, int dx ) {
int perno,pivot;
if( sx < dx ) {
pivot =sx + rand() % (dx-sx+1);
perno = distribuzione(a, sx, pivot, dx);
quicksort(a, sx, perno-1);
quicksort(a, perno+1, dx);
}
}
void legge(char **a, int len) {
int i;
scanf("%d",&len);
a = malloc(len*sizeof(char*));
for(i=0;i<len;i++){
a[i]=malloc(101*sizeof(char));
scanf("%s",a[i]);
}
}
int main() {
int i, n;
char **A;
legge(A,n);
quicksort(A, 0, n);
for(i=0;i<n;i++){
printf("%s\n", A[i]);
}
return 0;
}
solo che non mi da nessun risultato alla fine dell'esecuzione...qualcuno sa come aiutarmi?