bonsoir
j'ai fais un code qu'effectue le tri d'un tableau par fusion mais dans l'exécution il ne fait rien!!!! sauf l'affichage de les éléments de tableau ... pouvez vous m'aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include<stdio.h>
 
 
#include<stdlib.h>
 
 
#define n 10
int i,x;
 
 
 
 
 
// Fusion des listes t(de1..vers1) et t(de2..vers2) dans tmp(posInTmp..posInTmp+count-1)
 
 
 
 
void fusion(int t[n],int tmp[n], int de1, int vers1, int de2, int vers2, int count, int posInTmp) 
 
{
 
     int i;
 
     for(i = 0 ; i < count ; i++)
 
     {
 
              if (de2 > vers2)   // Si fin de la liste 2, on prend dans liste 1
 
                      tmp[posInTmp++] = t[de1++];
 
              else if (de1 > vers1)   // Idem si fin de la liste 1
 
                      tmp[posInTmp++] = t[de2++];
 
              else if (t[de1] <= t[de2])   // Enfin, sinon, on compare
 
                      tmp[posInTmp++] = t[de1++];
 
              else 
 
                      tmp[posInTmp++] = t[de2++];
 
      }
 
}
 
 
 
// Tri de tout le tableau t par fusions successives
 
void trifusion()
 
{
 
 
int t[n];
 
 
int tmp[n];
 
 
 
 
      int sortLength = 1, de1, de2, de3, i;
 
 
      while(sortLength < n)
 
      {
 
              de1 = 0;
 
 
              while(de1 < n)
 
              {
 
                    de2 = de1 + sortLength;
 
                    de3 = de2 + sortLength;
 
 
                    if(de2>n) de2 = n;
 
 
                    if(de3> n )de3 = n;
 
                    fusion(t, tmp, de1, de2-1, de2, de3-1, de3-de1, de1);
 
                    de1 = de3;
 
              }
 
 
 
              for(i = 0 ; i < n ; i++) 
 
 
{
t[i] = tmp[i];
 
              sortLength *= 2;
 
 
}
      }
 
 }
main()
{
  int t[n];
    for (i = 0 ; i < n ; i++)
 
    {
 
       printf("entrer la valeure  num  %d de tableau   svp \n...............",i);
 
       scanf("%d",&x);
 
        t[i] = x;
 
    }
 
trifusion();
printf("Affichage de ses valeurs pour vérifier\n");
 
 
    for (i = 0 ; i <n  ; i++)
 
    {
 
        printf("%d\n", t[i]);
 
 
 
 
}
}