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
| public static void triFusion(int[] tab, int debut, int fin){
int[] tab1= tab;
if(fin>debut){
triFusion(tab1, debut, (debut+fin/2));
triFusion(tab1, (debut+fin)/2 +1,fin);
fusionner(tab1, debut, (debut+fin)/2, fin);
}
}
private static void fusionner(int[] tab, int debut,int milieu, int fin){
int[] t1= new int[milieu-debut+1];
int[]t2= new int[fin-milieu];
for(int i=0; i<= t1.length-1; i++){
t1[i]=tab[debut+i];
}
for(int i=0; i<= t2.length-1; i++){
t1[i]=tab[fin+1+i];
}
int i=0,j=0,k=0;
while(k<=fin){
if(i>=t1.length){
tab[k]=t2[j];
j++;
}else{
if(j>=t2.length){
tab[k]=t1[i];
i++;
}else{
if(t1[i]<= t2[j]){
tab[k]=t1[i];
i++;
}else{
tab[k]=t2[j];
j++;
}
}
}
k++;
}
} |
Partager