///////////////////////////////////////////////////////////////////////////// // Creation 19/12/2003 // // // TESTQSORT.C // ----------- // // // Sylvain MARECHAL - sylvain.marechal1@libertysurf.fr ///////////////////////////////////////////////////////////////////////////// // // Show qsort usage // ///////////////////////////////////////////////////////////////////////////// #include #include #include #include ///////////////////////////////////////////////////////////////////////////// // // COMPARE ///////////////////////////////////////////////////////////////////////////// // // DESCRIPTION // --compare-- // // qsort() callback used to compare 2 integer // // ARGUMENTS // Argument1: const void *arg1 // Argument2: const void *arg2 // RETOUR/RESULTAT // int // < 0 arg1 less than arg2 // 0 arg1 equivalent to arg2 // > 0 arg1 greater than arg2 // REMARQUE // Rev 19/12/2003 ////////////////////////////////////////////////////////////////////////////// int compare( const void *arg1, const void *arg2 ) { int * parg1 = (int *)arg1; int * parg2 = (int *)arg2; if( *parg1 < *parg2 ) return -1; if( *parg1 > *parg2 ) return 1; return 0; } ///////////////////////////////////////////////////////////////////////////// // // FILLARRAY ///////////////////////////////////////////////////////////////////////////// // // DESCRIPTION // --fillArray-- // // Fill the array with random values // // ARGUMENTS // Argument1: int * array // Argument2: int cbarray // RETOUR/RESULTAT // int // REMARQUE // Rev 19/12/2003 ////////////////////////////////////////////////////////////////////////////// int fillArray( int * array, int cbarray) { static int s_first = 1; int i; if( s_first ) srand( (unsigned)time( NULL ) ); // initialize array with value beetween 0 and 999 for( i = 0; i < cbarray; i++ ) { array[i] = (rand() % 1000); } return 0; } ///////////////////////////////////////////////////////////////////////////// // // DISPLAYARRAY ///////////////////////////////////////////////////////////////////////////// // // DESCRIPTION // --displayArray-- // // Display the array's value // // ARGUMENTS // Argument1: int * array // Argument2: int cbarray // RETOUR/RESULTAT // int // REMARQUE // Rev 19/12/2003 ////////////////////////////////////////////////////////////////////////////// int displayArray( int * array, int cbarray) { int i; for( i = 0; i < cbarray; i++ ) { printf( "%5d", array[i] ); } printf( "\n" ); return 0; } ///////////////////////////////////////////////////////////////////////////// // // MAIN ///////////////////////////////////////////////////////////////////////////// // // DESCRIPTION // --main-- // ARGUMENTS // RETOUR/RESULTAT // int // REMARQUE // Rev 19/12/2003 ////////////////////////////////////////////////////////////////////////////// int main() { int tabToSort[10]; // Fill array with random values fillArray( tabToSort, sizeof(tabToSort)/sizeof(int) ); // Display it displayArray( tabToSort, sizeof(tabToSort)/sizeof(int) ); // Sort array using Quicksort algorithm: */ qsort( (void *)tabToSort, (size_t)sizeof(tabToSort)/sizeof(int), sizeof( int ), compare ); // Display it displayArray( tabToSort, sizeof(tabToSort)/sizeof(int) ); return 0; }