Pagini recente » Istoria paginii runda/simulare_03_04_2019/clasament | Cod sursa (job #836637) | Cod sursa (job #1005887) | Cod sursa (job #532415) | Cod sursa (job #601664)
Cod sursa(job #601664)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=5000001;
int n;
int v[N],aux[N];
void Interclasare(int st, int dr){
int i=st,k=st,m=(st+dr)/2,j;
j=m+1;
while(i<=m&&j<=dr){
if(v[i]<v[j])
aux[k++]=v[i++];
else
aux[k++]=v[j++];
}
while(i<=m)
aux[k++]=v[i++];
while(j<=dr)
aux[k++]=v[j++];
for(i=st;i<=dr;i++){
v[i]=aux[i];
}
}
void Mergesort(int st,int dr){
int m=(st+dr)/2;
if(st==dr)
return;
Mergesort(st,m);
Mergesort(m+1,dr);
Interclasare(st,dr);
}
int main(){
int i;
in>>n;
for(i=1;i<=n;i++){
in>>v[i];
}
Mergesort(1,n);
for(i=1;i<=n;i++){
out<<v[i]<<" ";
}
return 0;
}