Pagini recente » Cod sursa (job #2621907) | Cod sursa (job #2910078) | Cod sursa (job #2978888) | Cod sursa (job #3265605) | Cod sursa (job #2900138)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
//ifstream f("D:/Proiecte/Clion/Projects/hashuri.in");
//ofstream g("D:/Proiecte/Clion/Projects/hashuri.out");
int n, v[500005], aux[500005];
void merge(int v[], int s, int d, int mid)
{
int p = s, q = mid + 1, k = 1;
while(p <= mid && q <= d)
if(v[p] <= v[q])
aux[k++] = v[p++];
else if(v[p] > v[q])
aux[k++] = v[q++];
if(p <= mid){
for(q = p;q <= mid; q++)
aux[k++] = v[q];
}
else{
for(p = q;p <= d; p++)
aux[k++] = v[p];
}
k = 1;
for(int u = s; u <= d; u++)
v[u] = aux[k++];
}
void MergeSort(int v[], int s, int d)
{
if((d - s) <= 1){
if(v[s] > v[d])
swap(v[s], v[d]);
}
else{
int mid = (s + d)/2;
MergeSort(v, s, mid);
MergeSort(v, mid + 1, d);
merge(v, s, d, mid);
}
}
int main(){
f >> n;
for(int i = 0; i < n; ++i)
f >> v[i];
// QuickSort(v, 0, n - 1);
MergeSort(v, 0, n - 1);
for(int i = 0; i < n; ++i)
g << v[i] << ' ';
f.close();
g.close();
return 0;
}