Create suffix array and qsort it

#include
#include
#include

void sortstrarr(void *array, unsigned n);
static int cmpr(const void *a, const void *b);

int main(int argc, char *argv[])
{
char *strarr[1024];
char *str = NULL;
int i = 0, len = 0;

if(argc == 2)
{
str = argv[1];
len = strlen(str);
} else
{
fprintf(stderr, "Usage: strsufsort STRING\n");
return 1;
}

/* create suffix pointer array */
for(i = 0; i < len; i++)
strarr[i] = &str[i];

/* print it... */
for(i = 0; i < len; i++)
printf("%s\n", strarr[i]);

/* qsort the sufx. ptr array */
sortstrarr(strarr, len);
printf("--\n");

/* again print it... */
for(i = 0; i < len; i++)
printf("%s\n", strarr[i]);

return 0;
}

static int cmpr(const void *a, const void *b)
{
return strcmp(*(char **)a, *(char **)b);
}

void sortstrarr(void *array, unsigned n)
{
qsort(array, n, sizeof(char *), cmpr);
}

No comments:

Post a Comment