Pagini recente » Cod sursa (job #2614421) | Cod sursa (job #1101789) | Cod sursa (job #1137408) | Cod sursa (job #2750042) | Cod sursa (job #2540005)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f1("algsort.in");
ofstream f2("algsort.out");
int a[500001];
int N, i;
void merg(int a[], int lb, int mid, int ub){
int i, j, k;
i = lb;
k = lb;
j = mid + 1;
int b[500001];
while(i <= mid && j <= ub){
if(a[i] < a[j]){
b[k] = a[i];
k++;
i++;
}
else{
b[k] = a[j];
k++;
j++;
}
}
while(i <= mid){
b[k] = a[i];
k++;
i++;
}
while(j <= ub){
b[k] = a[j];
k++;
j++;
}
for(i = lb; i <= ub; i++){
a[i] = b[i];
}
}
void mergeSort(int a[], int lb, int ub){
if(lb < ub){
int mid = (lb + ub) / 2;
mergeSort(a, lb, mid);
mergeSort(a, mid + 1, ub);
merg(a, lb, mid, ub);
}
}
using namespace std;
int main()
{
f1 >> N;
for(i = 1; i <= N; i++){
f1 >> a[i];
}
mergeSort(a, 1, N);
for(i = 1; i <= N; i++){
f2 << a[i] << " ";
}
return 0;
}