Cod sursa(job #1259485)

Utilizator RenataRenata Renata Data 10 noiembrie 2014 02:14:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],b[500000];
void interclasare(int a[],int st,int m,int dr)
{
    int i=st,j=m+1,k=st;
    while(i<=m&&j<=dr)
     {if(a[i]<=a[j])
        {b[k]=a[i];
         i++;}
    else
    {
        b[k]=a[j];
        j++;
    }k++;}
    while(i<=m)
       {b[k]=a[i];
        i++;
        k++;}
    while(j<=dr)
        {b[k]=a[j];
          j++;
          k++;}
    for(i=st;i<=dr;i++)
        a[i]=b[i];
}
void mergesort(int a[],int st,int dr)
{
    if(st==dr) return;
    mergesort(a,st,(st+dr)/2);
    mergesort(a,(st+dr)/2+1,dr);
    if(a[(st+dr)/2]<=a[(st+dr)/2+1]) return;
    interclasare(a,st,(st+dr)/2,dr);
}
int main()
{
    int n;
    ifstream f("algsort.in");
    f>>n;
    for(int i=0;i<n;i++){
        f>>a[i];
    }
    f.close();
    mergesort(a,0,n-1);
    ofstream g("algsort.out");
    for(int i=0;i<n;i++)
        g<<a[i]<<" ";
    g.close();
    return 0;
}