Cod sursa(job #2625204)

Utilizator daniel-ilie.judetJudet Daniel Ilie daniel-ilie.judet Data 5 iunie 2020 19:58:20
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001];
 
void interclasare(int v[],int st,int dr)
{
int i,j,k,mij=(st+dr)/2,l1=mij-st+1,l2=dr-mij;
int arr1[l1],arr2[l2];
for(i=0;i<l1;i++)
    arr1[i]=v[st+i];
for(j=0;j<l2;j++)
    arr2[j]=v[mij+j+1];
 
i=0;j=0;k=st;
while(i<l1 && j<l2)
    if (arr1[i]>arr2[j])
        v[k++]=arr2[j++];
    else
        v[k++]=arr1[i++];
 
while(i<l1)
    v[k++]=arr1[i++];
while(j<l2)
    v[k++]=arr2[j++];
 
}
 
void merge_sort(int v[],int st,int dr)
{
    if (st<dr)
    {
        merge_sort(v,st,(st+dr)/2);
        merge_sort(v,(st+dr)/2+1,dr);
        interclasare(v,st,dr);
    }
}
 
 
 
int main()
{
 
    int n;
    f>>n;
    for(int t=0;t<n;t++)
        f>>v[t];
    merge_sort(v,0, n-1);
    for(int t=0;t<n;t++)
        g<<v[t]<<' ';
    f.close();
    g.close();
    return 0;
}