Cod sursa(job #2622448)

Utilizator UtilizatorGBGeorge Bodea UtilizatorGB Data 1 iunie 2020 12:31:22
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 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;
    for(int i=0;i<n;i++)
        f>>v[i];
    merge_sort(v,0, n-1);
    for(int i=0;i<n;i++)
        g<<v[i]<<' ';
    f.close();
    g.close();
    return 0;
}