Tri par insertion avec sentinelle

Contenu du snippet

Il s'agit d'un tri classique et peu efficace, mais qui montre l'usage d'une sentinelle.

Source / Exemple :


#include "stdafx.h"
#include "stdlib.h"
#include "time.h"

#define DIM 10

int main(int argc, char* argv[])
{

    int i,j, t[DIM+1];

    t[1] = 1;
    srand(unsigned(time(NULL)));

    // Tirage
    for ( i = 2; i <= DIM; i++ ) {
        j = rand()%i+1;
        t[i] = t[j];
        t[j] = i;
    }

    // Affichage
    for ( i = 1; i <= DIM; i++ )
        printf("t[%d] = %d\n", i, t[i]);

    puts("");

    // Tri
    int aux;
    for ( i = 1; i <= DIM - 1; i++ ) {
	aux = t [i + 1];
	t[0] = aux; // sentinelle
	j = i;
	while (t[j] > aux) { t[j+1] = t[j]; j = j - 1; }
	t[j+1] = aux;
    }

    // Affichage
    for ( i = 1; i <= DIM; i++ )
        printf("t[%d] = %d\n", i, t[i]);

    return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.