#include <stdio.h> main() { /* Prototypes des fonctions appelées */ void TRI_SHELL(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_SHELL(T, DIM); printf("Tableau trié : \n"); ECRIRE_TAB (T, DIM); return 0; } void TRI_SHELL(int *T, int N) { /* Trie un tableau T d'ordre N par la méthode de Shell */ /* Prototypes des fonctions appelées */ void PERMUTER(int *A, int *B); /* Variables locales */ int SAUT, M, K; int TERMINE; /* Traitements */ SAUT = N; while (SAUT>1) { SAUT /= 2; do { TERMINE=1; for (M=0; M<N-SAUT; M++) /* Attention aux indices! */ { K=M+SAUT; if (*(T+M) > *(T+K)) { PERMUTER(T+M,T+K); TERMINE=0; } } } while(!TERMINE); /* Attention: utiliser la négation de */ } /* la condition employée en lang algorithmique */ } void PERMUTER(int *A, int *B) { int AIDE; AIDE = *A; *A = *B; *B = AIDE; } void LIRE_TAB (int *TAB, int *N, int NMAX) { . . . } void ECRIRE_TAB (int *TAB, int N) { . . . }