Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction qsort

La fonction mbtowc La fonction quick_exit


Entête à inclure

#include <stdlib.h>  // <cstdlib> en C++

Fonction qsort

void qsort( void * array, size_t elementCount, size_t elementSize,
            int (*compareFunction)( const void*, const void* ) );

Permet de trier un tableau d'éléments. Tous les éléments du tableau doivent être du même type (entiers, flottants, ...), mais vous avez le choix sur le type des éléments contenus. Comme la fonction qsort ne connais pas à l'avance ce type d'éléments, vous devez lui spécifier un certains nombre d'informations et notamment une fonction permettant de comparer les éléments deux à deux.

Comme c'est vous qui spécifiez la fonction de comparaison, vous avez le contrôle sur l'ordre de tri (ordre croissant ou ordre décroissant).

Après l'appel de cette fonction, le tableau contiendra les éléments ordonnés.

Paramètres

Valeur de retour

Cette fonction ne renvoie aucune valeur.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
#include <stdio.h>          
#include <stdlib.h>

#define INT_ARRAY_COUNT 6
#define DOUBLE_ARRAY_COUNT 7

int intComparator ( const void * first, const void * second ) {
    int firstInt = * (const int *) first;
    int secondInt = * (const int *) second;
    return firstInt - secondInt;
}

int doubleComparator ( const void * first, const void * second ) {
    int firstDouble = * (const double *) first;
    int secondDouble = * (const double *) second;
    return (int) (firstDouble - secondDouble);
}


int main() {
    
    int intArray[] = { 10, 50, 30, 20, 40, 60 };
    double doubleArray[] = { 1.2, 6.4, 7.4, 2.9, 4.3, 5.6, 8.1 };

    qsort( intArray, INT_ARRAY_COUNT, sizeof(int), intComparator );
    qsort( doubleArray, DOUBLE_ARRAY_COUNT, sizeof(double), doubleComparator );

    for( int i=0; i<INT_ARRAY_COUNT; i++ ) {
        printf( "%u - ", intArray[i] );
    }
    printf( "\n" );

    for( int i=0; i<DOUBLE_ARRAY_COUNT; i++ ) {
        printf( "%5.2lf - ", doubleArray[i] );
    }
    printf( "\n" );

    return 0;
}
Exemple d'utilisation de la fonction qsort

Pour compiler et exécuter ce programme veuillez procéder ainsi :

$> gcc -Wall -o sample sample.c
$> ./sample
10 - 20 - 30 - 40 - 50 - 60 - 
 1.20 -  2.90 -  4.30 -  5.60 -  6.40 -  7.40 -  8.10 - 
$>

Sujets connexes

bsearch


La fonction mbtowc La fonction quick_exit