I need to know to use the qsort() function.. especially the sort_function(const void *a, const void *b) that is used by qsort()...
Thank you

Moderator: Board moderators
Code: Select all
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
char a[55];
int pos;
int inv;
} DNA;
int cmp( DNA *a, DNA *b ) {
if ( a->inv != b->inv ) {
return a->inv - b->inv;
}
return a->pos - b->pos;
}
int main(){
int N, l, num, i, j, t, k, f = 0;
DNA list[102];
int cmp();
scanf("%d", &N );
while ( N -- ) {
if ( f ) putchar('\n');
f = 1;
scanf("%d %d", &l, &num );
for ( i = 0; i < num; i++ ) {
scanf("%s", list[i].a );
list[i].pos = i;
t = strlen( list[i].a );
list[i].inv = 0;
for ( j = 0; j < t; j++ )
for ( k = j + 1; k < t; k++ )
list[i].inv += ( list[i].a[j] > list[i].a[k] );
}
qsort( list, num, sizeof( DNA ), cmp );
for ( i = 0; i < num; i++ )
printf("%s\n", list[i].a );
}
return 0;
}
Code: Select all
int <name>(const void *<param1>,const void *<param2>)
Code: Select all
qsort(table,size,size_of_element,strcmp)