Documente Academic
Documente Profesional
Documente Cultură
10 8 7 9 5
10 8 7
10 8
95
7
8 10
7 8 10
5 7 8 9 10
5 9
#include <iostream>
using namespace std;
int n,a[100],c[100];
void citeste(int a[], int &n){
cout<<"n=";
cin>>n;
cout<<"dati elementele vectorului:";
for(int i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
}
void afiseaza(int c[],int n)
{
for(int i=1;i<=n;i++)
cout<<"a["<<i<<"]="<<c[i]<<endl;
}
void Interclaseaza(int p, int u, int m)
{
int i=p, j=m+1, k=1;
while(i<=m && j<=u) //i de la p la m si j de la m+1 la u
{
if(a[i]<=a[j])
c[k++]=a[i++];
else
c[k++]=a[j++];
}
while(i<=m)
c[k++]=a[i++];
while(j<=u)
c[k++]=a[j++];
k=1;
i=p;
while(i<=u)
a[i++]=c[k++];
}
void divizeaza(int p, int u, int &m)
{
m=(p+u)/2;
}
void MergeSort(int a[],int p, int u) //sortare interclasare
{
int m;
if(p<u)
{
divizeaza(p,u,m);
MergeSort(a,p,m);
MergeSort(a,m+1,u);
Interclaseaza(p,u,m);
}
}
int main()
{
citeste(a,n);
MergeSort(a,1,n);
afiseaza(a,n);
return 0;
}