Cod sursa(job #2081324)

Utilizator TeodorAxinteAxinte Teodor TeodorAxinte Data 4 decembrie 2017 16:54:54
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int N = 500010;
int n,i,v[N],aux[N];
void mergeSort(int,int);
int main()
{
    srand(time(NULL));
    fin>>n;
    for(i=1;i<=n;i++)fin>>v[i];
    mergeSort(1,n);
    for(i=1;i<=n;i++)fout<<v[i]<<' ';

    return 0;
}
void mergeSort(int lo,int hi)
{
    if(lo>=hi)return;
    int i,j,k, mi=(lo+hi)/2;
    mergeSort(lo,mi);
    mergeSort(mi+1,hi);
    for(i=lo;i<=hi;i++)aux[i]=v[i];
    i=lo;k=lo;j=mi+1;
    while(i<=mi&&j<=hi)
    {
        if(aux[i]<=aux[j])v[k++]=aux[i++];
        else v[k++]=aux[j++];
    }
    while(i<=mi)v[k++]=aux[i++];
    while(j<=hi)v[k++]=aux[j++];

}