Exercices langage C Tri par insertion avec fonctions
Rédigé par Salim KHALIL, Publié le 06 Février 2011, Mise à jour le Mardi, 08 Novembre 2022 00:44Exercice 1 Tri par insertion
Ecrire la fonction TRI_INSERTION qui utilise la fonction INSERER pour trier par ordre croissant les éléments d'un tableau à N éléments.
Ecrire un programme pour tester la fonction TRI_INSERTION.
Méthode: Trier le tableau de gauche à droite en insérant à chaque fois l'élément I+1 dans le tableau (déjà trié) des I premiers éléments.
Exercice 2
Ecrire la fonction RANGER qui arrange le contenu de ses deux paramètres X et Y de façon à ce que le contenu de X soit plus petit que celui de Y. RANGER retourne la valeur logique 1 si un échange a eu lieu, sinon 0.
#include
main()
{
/* Prototypes des fonctions appelées */
void TRI_INSERTION(int *T, int N);
void LIRE_TAB (int *TAB, int *N, int NMAX);
void ECRIRE_TAB (int *TAB, int N);
/* Variables locales */
int T[100]; /* Tableau d'entiers */
int DIM; /* Dimension du tableau */
/* Traitements */
LIRE_TAB (T, &DIM, 100);
printf("Tableau donné : \n");
ECRIRE_TAB (T, DIM);
TRI_INSERTION(T, DIM);
printf("Tableau trié : \n");
ECRIRE_TAB (T, DIM);
return 0;
}
void TRI_INSERTION(int *T, int N)
{
void INSERER(int X, int *T, int *N);
/* Variables locales */
int I; /* indice courant */
/* Tri de T par insertion */
I=1;
while (I<N)
INSERER(*(T+I), T, &I);
}
void INSERER(int X, int *T, int *N)
{
. . .
}
void LIRE_TAB (int *TAB, int *N, int NMAX)
{
. . .
}
void ECRIRE_TAB (int *TAB, int N)
{
. . .
}
int RANGER(int *X, int *Y)
{
int AIDE;
if (*X>*Y)
{
AIDE = *X;
*X = *Y;
*Y = AIDE;
return 1;
}
else
return 0;
}