Cod sursa(job #2623569)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 3 iunie 2020 14:03:59
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;
int n,a[500010], temp[500010];

void interclasare(int st, int mid, int dr){
    int i = st, j = mid, k = st;

    while (i < mid && j < dr){
        if(a[i] <= a[j]){
            temp[k++] = a[i];
            i++;
        }
        else {
            temp[k++] = a[j];
            j++;
        }
    }
    while(i < mid){
        temp[k++] = a[i];
        i++;
    }
    while(j < dr){
        temp[k++] = a[j];
        j++;
    }

    for(i = st; i<dr;i++)
        a[i] = temp[i];
}

void mergesort(int st, int dr){
    if(dr - st > 1){
        int mid = (dr+st)/2;
        mergesort(st, mid);
        mergesort(mid, dr);
        interclasare(st,mid,dr);
    }
}
int main()
{
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    mergesort(0,n);
    for(int i=0;i<n;i++)cout<<a[i]<<' ';

    return 0;
}