#include<stdio.h>
#include<stdlib.h>
int lire(int n)
{
do
{
printf("donner la taille du tableau (max.50) : ");
scanf("%d",&n);
printf("\n");
}
while(n<1 || n>50);
return n;
}
int lire_tab(int T[],int n)
{
int i;
for(i=1;i<=n;i++)
{
T[i]=rand()%2000+1;
}
}
void tri_fusion(int T[],int T1[],int T2[],int n1,int n2)
{
int i,j,k;
i=j=k=1;
while((i<=n1) && (j<=n2))
{if(T1[i]<T2[j])
{
T[k]=T1[i];
k++;
i++;
}
else
{ T[k]=T2[j];
k++;
j++;
}
}
if(i<n1)
{ while(i<=n1)
{
T[k]=T1[i];
k++;
i++;
}}
if(j<n2)
{while(j<=n2)
{
T[k]=T2[j];
k++;
j++;
}}
}
void tri_selection(int T[],int n)
{
int i,min,j,ech;
for(i=1;i<n;i++)
{
min=i;
for(j=i+1;j<=n;j++)
{
if(T[j]<T[min])
min=j;
}
if(min!=i)
{
ech=T[i];
T[i]=T[min];
T[min]=ech;
}}}
void afficher (int T[],int n)
{
int i;
for(i=1;i<=n;i++)
printf("T[%d]=%d \n",i,T[i]);
printf("\n");
}
void menu(int T[],int T1[],int T2[],int n1,int n2)
{
int choix;
do{
printf("|1 | : La taille du 1er tableau \n");
printf("|2 | : La taille de 2eme tableau \n");
printf("|3 | : Generer le 1er tableau \n");
printf("|4 | : Generer le 2eme tableau \n");
printf("|5 | : Trier le 1er tableau \n");
printf("|6 | : Trier le 2eme tableau \n");
printf("|7 | : Fusioner le 1er et 2eme tableau \n");
printf("|8 | : Afficher le tableau resultat \n");
printf("|9 | : Afficher le 1er tableau \n");
printf("|10| : Afficher 2eme tableau \n");
printf("|0 | : Quiter \n");
printf("donner votre choix : ");
scanf("%d",&choix);
switch(choix)
{
case 1: n1=lire(n1);break;
case 2: n2=lire(n2);break;
case 3: lire_tab(T1,n1);break;
case 4: lire_tab(T2,n2);break;
case 5: tri_selection(T1,n1);break;
case 6: tri_selection(T2,n2);break;
case 7: tri_fusion(T,T1,T2,n1,n2);break;
case 8: afficher(T,n1+n2);break;
case 9: afficher(T1,n1);break;
case 10: afficher(T2,n2);break;
}
} while(choix !=0);
}
main()
{
int T1[50],T2[50],T[100];
int n1,n2;
menu(T,T1,T2,n1,n2);
system ("pause");
return 0;
}
/*3) complexité
tri_fusion
Tmax= 1+1+1+(n1+n2-k)(1+1+1+1)+1+(n1-i+1)(1+1+1+1)+(n2-j+1)(1+1+1+1)
Tmax(n)=1+1+1+(n1+j)(4)+1+(n2-j+1)(4)
=4+4n1+4j+4n2-4j+4
=4n1+4n2+8
=4n+8=O(n)
*/
#include<stdlib.h>
int lire(int n)
{
do
{
printf("donner la taille du tableau (max.50) : ");
scanf("%d",&n);
printf("\n");
}
while(n<1 || n>50);
return n;
}
int lire_tab(int T[],int n)
{
int i;
for(i=1;i<=n;i++)
{
T[i]=rand()%2000+1;
}
}
void tri_fusion(int T[],int T1[],int T2[],int n1,int n2)
{
int i,j,k;
i=j=k=1;
while((i<=n1) && (j<=n2))
{if(T1[i]<T2[j])
{
T[k]=T1[i];
k++;
i++;
}
else
{ T[k]=T2[j];
k++;
j++;
}
}
if(i<n1)
{ while(i<=n1)
{
T[k]=T1[i];
k++;
i++;
}}
if(j<n2)
{while(j<=n2)
{
T[k]=T2[j];
k++;
j++;
}}
}
void tri_selection(int T[],int n)
{
int i,min,j,ech;
for(i=1;i<n;i++)
{
min=i;
for(j=i+1;j<=n;j++)
{
if(T[j]<T[min])
min=j;
}
if(min!=i)
{
ech=T[i];
T[i]=T[min];
T[min]=ech;
}}}
void afficher (int T[],int n)
{
int i;
for(i=1;i<=n;i++)
printf("T[%d]=%d \n",i,T[i]);
printf("\n");
}
void menu(int T[],int T1[],int T2[],int n1,int n2)
{
int choix;
do{
printf("|1 | : La taille du 1er tableau \n");
printf("|2 | : La taille de 2eme tableau \n");
printf("|3 | : Generer le 1er tableau \n");
printf("|4 | : Generer le 2eme tableau \n");
printf("|5 | : Trier le 1er tableau \n");
printf("|6 | : Trier le 2eme tableau \n");
printf("|7 | : Fusioner le 1er et 2eme tableau \n");
printf("|8 | : Afficher le tableau resultat \n");
printf("|9 | : Afficher le 1er tableau \n");
printf("|10| : Afficher 2eme tableau \n");
printf("|0 | : Quiter \n");
printf("donner votre choix : ");
scanf("%d",&choix);
switch(choix)
{
case 1: n1=lire(n1);break;
case 2: n2=lire(n2);break;
case 3: lire_tab(T1,n1);break;
case 4: lire_tab(T2,n2);break;
case 5: tri_selection(T1,n1);break;
case 6: tri_selection(T2,n2);break;
case 7: tri_fusion(T,T1,T2,n1,n2);break;
case 8: afficher(T,n1+n2);break;
case 9: afficher(T1,n1);break;
case 10: afficher(T2,n2);break;
}
} while(choix !=0);
}
main()
{
int T1[50],T2[50],T[100];
int n1,n2;
menu(T,T1,T2,n1,n2);
system ("pause");
return 0;
}
/*3) complexité
tri_fusion
Tmax= 1+1+1+(n1+n2-k)(1+1+1+1)+1+(n1-i+1)(1+1+1+1)+(n2-j+1)(1+1+1+1)
Tmax(n)=1+1+1+(n1+j)(4)+1+(n2-j+1)(4)
=4+4n1+4j+4n2-4j+4
=4n1+4n2+8
=4n+8=O(n)
*/