kikoolol13 | Bonjour,
j'ai un problème avec mon tri et je n'arrive pas à voir où : Code :
- void fusion (int A[], int debut, int milieu, int fin)
- {
- // n1: longueur de T[debut..milieu], n2: longueur de T[milieu+1..fin]
- int n1=milieu-debut+1, n2=fin-milieu;
- int L[n1+1], R[n2+1];
- int i,j,k;
- for(i=1;i<=n1;i++)
- L[i]=A[debut+i-1];
- for(j=1;j<=n2;j++)
- R[j]=A[milieu+j];
- i=1;
- j=1;
- L[n1+1]=101;L[n2+1]=101; // Je met 101 car les valeurs stockés dans le tableau vont de 1 100.
- for(k=debut;k<=fin;k++)
- {
- if (L[i]<=R[j])
- {
- A[k]=L[i];
- i++;
- }
- else
- {
- A[k]=R[j];
- j++;
- }
- }
- }
- void tri_fusion (int A[], int debut, int fin)
- {int milieu;
- if(debut<fin)
- {
- milieu=(debut+fin)/2;
- tri_fusion(A,debut,milieu);
- tri_fusion(A,milieu+1,fin);
- fusion(A,debut,milieu,fin);
- }
- }
|
Merci de votre aide |