Pagini recente » Cod sursa (job #2843694) | Cod sursa (job #2765403) | Cod sursa (job #97158) | Cod sursa (job #116654) | Cod sursa (job #2270865)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, i;
int v[500005];
void interclas (int st, int mid, int dr, int v[500005]){
int i, j, k = 0, aux[500005];
i = st;
j = mid+1;
while (i <= mid && j <= dr){
if (v[i] < v[j]){
aux[++k] = v[i++];
}
else
aux[++k] = v[j++];
}
for (; i<=mid; i++){
aux[++k] = v[i];
}
for (; j<=dr; j++){
aux[++k] = v[j];
}
for (i=st; i<=dr; i++)
v[i] = aux[i-st+1];
}
void mergesort (int st, int dr, int v[]){
int mid;
mid = (st + dr)/2;
if (st < dr){
mergesort(st, mid, v);
mergesort(mid+1, dr, v);
interclas(st, mid, dr, v);
}
}
int main(){
fin >> n;
for (i=1; i<=n; i++){
fin >> v[i];
}
mergesort(1, n, v);
for (i=1; i<=n; i++)
fout << v[i] << " ";
return 0;
}