Pagini recente » Cod sursa (job #2369914) | Cod sursa (job #2331644) | Cod sursa (job #693645) | Cod sursa (job #473349) | Cod sursa (job #1119914)
#include<fstream>
#include<iostream>
using namespace std;
int a[500000], b[500000];
void merge_sort(int l, int r) {
if(l < r) {
int m = l + (r-l) / 2;
merge_sort(l, m);
merge_sort(m+1, r);
// merge
int i = l, j = m+1, k = l;
while(i <= m && j <= r) {
if(a[i] < a[j]) b[k++] = a[i++];
else b[k++] = a[j++];
}
// copy the rest of the elements
while(i <= m) b[k++] = a[i++];
while(j <= r) b[k++] = a[j++];
// copy b into a
for(i = l; i <= r; i++) a[i] = b[i];
}
}
int main() {
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, i;
fin >> n;
for(i = 0; i < n; i++) fin >> a[i];
merge_sort(0, n-1);
for(i = 0; i < n; i++) fout << a[i] << " ";
return 0;
}