Pagini recente » Cod sursa (job #3175300) | Cod sursa (job #1134277) | Cod sursa (job #151846) | Cod sursa (job #2396235) | Cod sursa (job #1259488)
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],b[500000];
void interclasare(int a[],int st,int m,int dr)
{
int i=st,j=m+1,k=st;
while(i<=m&&j<=dr)
{if(a[i]<=a[j])
{b[k]=a[i];
i++;}
else
{
b[k]=a[j];
j++;
}k++;}
while(i<=m)
{b[k]=a[i];
i++;
k++;}
while(j<=dr)
{b[k]=a[j];
j++;
k++;}
for(i=st;i<=dr;i++)
a[i]=b[i];
}
void mergesort(int a[],int st,int dr)
{
if(st==dr) return;
mergesort(a,st,(st+dr)/2);
mergesort(a,(st+dr)/2+1,dr);
if(a[(st+dr)/2]<=a[(st+dr)/2+1]) return;
interclasare(a,st,(st+dr)/2,dr);
}
int main()
{
int n;
ifstream f("algsort.in");
f>>n;
for(int i=0;i<n;i++){
f>>a[i];
}
f.close();
mergesort(a,0,n-1);
ofstream g("algsort.out");
for(int i=0;i<n;i++)
g<<a[i]<<" ";
g.close();
return 0;
}