/* Calcul de l'indice de la valeur minimale */ /* d'un tableau d'entiers */ public class FusionTableaux { /* Methode de creation d'un tableau de double */ /* initialise avec une serie croissante */ /* de nombres aleatoires */ static int [] initRandCroissant(int n) { int i; int [] tab = new int[n]; tab[0] =(int) (Math.random()*10); for ( i = 1 ; i < tab.length ; i = i+1 ) { tab[i] = tab[i-1]+(int)(Math.random()*10); } return tab; } /* Methode d'affichage des valeurs contenues */ /* dans un tableau de double */ static void affichageTableau(int [] t) { int i; for ( i = 0 ; i < t.length ; i = i+1 ) { Ecran.afficherln(t[i]); } } ///////////////////////////////////////////////// /* Methode de fusion de 2 tableau d'entiers */ /* tries t1 et T2 en un nouveau tableau */ /* d'entiers trie */ static int [] fusion(int [] t1,int [] t2) { int [] t; int l; int i; int i1; int i2; l = t1.length+t2.length; t = new int[l]; i1 = 0; i2 = 0; for ( i = 0 ; i < l ; i = i+1 ) { if ( i1 == t1.length ) { t[i] = t2[i2]; i2 = i2+1; } else { if ( i2 == t2.length ) { t[i] = t1[i1]; i1 = i1+1; } else { if ( t1[i1] < t2[i2] ) { t[i] = t1[i1]; i1 = i1+1; } else { t[i] = t2[i2]; i2 = i2+1; } } } } return t; } ///////////////////////////////////////////////// /* Programme principal */ public static void main(String [] args) { int n1; int [] t1; int n2; int [] t2; int [] t; Ecran.afficher("SVP, taille du tableau 1? "); n1 = Clavier.saisirInt(); t1 = initRandCroissant(n1); affichageTableau(t1); Ecran.afficher("SVP, taille du tableau 2? "); n2 = Clavier.saisirInt(); t2 = initRandCroissant(n2); affichageTableau(t2); t = fusion(t1,t2); Ecran.afficherln("Tableau trié:"); affichageTableau(t); } }