Pagini recente » Cod sursa (job #1528502) | Cod sursa (job #1552338) | Cod sursa (job #2811844) | Cod sursa (job #1279089) | Cod sursa (job #2943553)
#include <iostream>
#include <fstream>
using namespace std;
#define MaxN 500000
int v1[MaxN], v[MaxN];
void merge(int v[], int left, int mij, int right){
int i=left, j=mij+1, cnt=0;
while(i<=mij && j<=right){
if(v[i]<v[j]){
v1[cnt]=v[i];
cnt++;
i++;
}
else {
v1[cnt]=v[j];
j++;
cnt++;
}
}
while(i<=mij){
v1[cnt]=v[i];
cnt++;
i++;
}
while(j<=right){
v1[cnt]=v[j];
cnt++;
j++;
}
for(int i=0; i<cnt; i++){
v[left+i]=v1[i];
}
}
void mergesort(int v[], int left, int right){
if(left>=right)
return ;
int mij=(left+right)/2;
mergesort(v, left, mij);
mergesort(v, mij+1, right);
merge(v, left, mij, right);
}
int main()
{
ifstream in("algsort.in");
ofstream out("algsort.out");
int n, a, i;
in>>n;
for(i=0; i<n; i++){
in>>v[i];
}
mergesort(v, 0, n-1);
for(i=0; i<n; i++)
out<<v[i]<<" ";
return 0;
}