Pagini recente » Cod sursa (job #2214941) | Cod sursa (job #1080477) | Cod sursa (job #1107774) | Cod sursa (job #463954) | Cod sursa (job #2544748)
#include<iostream>
#include <fstream>
using namespace std;
int a[500001], n;
void interclass (int i, int m, int j) {
int b[500001];
int x = i;
int k = 1;
int y = m+1;
while (x<=m && y<=j) {
if (a[x]<a[y]){
b[k++] = a[x++];
}else {
b[k++] = a[y++];
}
}
while (x<=m){
b[k++] = a[x++];
}
while (y<=j){
b[k++] = a[y++];
}
int t = i;
for (k = 1; k<=(j-i)+1; k++){
a[t++] = b[k];
}
}
void merge (int left, int right) {
if (left == right) {
return;
}
int mid = (left + right) / 2;
merge (left, mid);
merge (mid + 1, right);
interclass (left, mid, right);
}
int main()
{
int i;
ifstream in ("algsort.in");
in>>n;
for(int i=1;i<=n;i++)
in>>a[i];
merge(1,n);
ofstream out ("algsort.out");
for(i=1;i<=n;i++)
out<<a[i]<<" ";
return 0;
}