Pagini recente » Istoria paginii runda/runda_ezoterica_1 | Cod sursa (job #2265882) | Cod sursa (job #1211738) | Cod sursa (job #979520) | Cod sursa (job #791087)
Cod sursa(job #791087)
//
// main.cpp
// Merge Sort
//
// Created by Ioana Teoc on 9/22/12.
// Copyright (c) 2012 Ioana Teoc. All rights reserved.
//
#include <iostream>
#include <stdio.h>
# define NMAX 500005
unsigned int V[NMAX], n;
void mergeSort(int l, int r){
if(l == r) return;
int B[NMAX];
int m = (l + r) / 2;
mergeSort(l, m);
mergeSort(m+1, r);
for(int i = l, j = m+1, k = 0; i <= m || j <= r; k++){
if((i <= m && V[i] <= V[j]) || j > r)
B[k] = V[i++];
else
B[k] = V[j++];
}
for(int i = l; i <= r; i++)
V[i] = B[i-l];
}
int main()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for(int i = 0; i < n; i++){
scanf("%d", &V[i]);
}
mergeSort(0, n-1);
for(int i = 0; i < n; i++){
printf("%d ", V[i]);
}
}