Cod sursa(job #873879)

Utilizator toranagahVlad Badelita toranagah Data 7 februarie 2013 18:50:07
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <iostream>
using namespace std;
const int MAX_N = 500100;
int v[MAX_N];
int aux[MAX_N];
int N;
void merge_sort(int, int);
int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    fin >> N;
    for (int i = 1; i <= N; ++i) {
        fin >> v[i];
    }
    merge_sort(1, N);
    for (int i = 1; i <= N; ++i) {
        fout << v[i] << ' ';
    }
    return 0;
}
 
void merge_sort(int lo, int hi) {
    if (lo == hi) return;
    int mid = lo + (hi - lo) / 2, numInv;
    merge_sort(lo, mid); merge_sort(mid + 1, hi);
    for (int i = lo, j = mid + 1, k = lo; i <= mid || j <= hi; ++k) {
        if ((i <= mid && v[i] < v[j]) || j > hi) {
            aux[k] = v[i++];
        } else {
            aux[k] = v[j++];
        }
    }
    for (int k = lo; k <= hi; ++k) {
        v[k] = aux[k];
    }
}