非常使用的快速排序算法,不稳定排序
#include<stdio.h>
#include<stdlib.h>
/*
* qsort invoke this function
*/
int compare_integers( void const *a, void const *b )
{
register int const *pa = a;
register int const *pb = b;
return *pa > *pb ? 1 : *pa < *pb ? -1 : 0; // cool !
}
int main( int argc, char *argv[] )
{
int *array;
int n_values;
int i;
/*
* see how many values there
*/
printf( "How many values there?\n" );
if( scanf( "%d", &n_values) == EOF || n_values <= 0 ){
printf( "Illegal number of values.\n" );
exit( EXIT_FAILURE );
}
/*
* allocate mem to store the values
*/
array = malloc( n_values * sizeof( int ) );
if( array == NULL ){
printf( "can't get mem for that values!\n" );
exit( EXIT_FAILURE );
}
/*
* load these numbers
*/
for( i = 0; i < n_values; ++i ){
printf("? ");
if( scanf( "%d", array + i ) == EOF ){
printf( "error reading value #%d\n", i );
free( array );
exit( EXIT_FAILURE );
}
}
/*
* sort for these values
*/
qsort( array, n_values, sizeof( int ), compare_integers );
/*
* print the result
*/
printf( "\nThe result is as follows:\n" );
for( i = 0; i < n_values; ++i ){
printf( "%d\n", array[i] );
}
free( array );
exit( 0 );
}