]>
Piment Noir Git Repositories - Algorithmic_C.git/blob - TP6/tas/tas.c
a99adb3ffa43020cbb9364d03913c79063778a1f
1 /******************************************************************************/
3 /******************************************************************************/
10 typedef int TAS
[MAX
]; /* la case d'indice 0 n'est pas utilisee */
12 /* affichage du tas */
13 void affiche_tas(TAS t
, int n
, char *message
)
17 printf("%s \n", message
);
18 for (i
= 1; i
<= n
; i
++)
23 /* initialisation du tas la valeur val */
24 void init_tas(TAS t
, int n
, int val
)
28 for (i
= 0; i
<= n
; i
++)
32 /* descente de l'element se trouvant au sommet du tas, a l'indice 1 et pas 0 */
33 void descente(TAS t
, int g
, int d
)
35 int i
, j
, x
; /* i indice du pere - j indice du fils */
43 j
++; /* j indice du fils choisi */
54 /* montee de l'element d'indice m */
55 void montee(TAS t
, int m
, int n
)
57 int i
, j
, x
; /* i indice du pere - j indice du fils */
73 /* remplacement de l'element d'indice m par nouv_val et mise a jour du tas */
74 void change(TAS t
, int nouv_val
, int m
, int n
)
76 if (nouv_val
< t
[m
]) {
85 /****************************************************************************/
93 for (i
= 1; i
<= n
; i
++)
95 affiche_tas(t
, n
, "Le tableau initial");
102 affiche_tas(t
, n
, "Apres contruction du tas");
103 change(t
, 45, 7, 10);
104 affiche_tas(t
, n
, "Le tas apres change(t,45,7,10)");
105 change(t
, -5, 3, 10);
106 affiche_tas(t
, n
, "Le tas apres change(t,-5,3,10)");
109 x
= t
[1]; /* le max */
110 t
[1] = t
[d
]; /* le dernier devient le premier du tableau */
111 t
[d
] = x
; /* le max est place a la fin du tableau */
112 descente(t
, g
, --d
); /* on fait descendre le nouveau premier elt a sa bonne place */
114 affiche_tas(t
, n
, "Le tas apres le tri");
116 for (i
= 1; i
< n
; i
++)
117 if (t
[i
] > t
[i
+ 1]) {
118 printf("Erreur tri\n");
123 /***************************************************************************
125 10 7 1 9 4 7 3 2 4 10
126 Apres contruction du tas
127 10 10 7 9 7 1 3 2 4 4
128 Le tas apres change(t,45,7,10)
129 45 10 10 9 7 1 7 2 4 4
130 Le tas apres change(t,-5,3,10)
131 45 10 7 9 7 1 -5 2 4 4
133 -5 1 2 4 4 7 7 9 10 45
134 ***************************************************************************/