Cod sursa(job #1238713)

Utilizator obidanDan Ganea obidan Data 7 octombrie 2014 16:33:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int b[500002];
void mergesort(int l, int r, int a[])
{
    if(l<r)
    {
     int k,i,j;
     int m=(l+r)/2;
     mergesort(l,m,a);
     mergesort(m+1,r,a);
     for(i=l, k=l, j=m+1; i<=m || j<=r; )
            if((j>r)||(i<=m && a[i]<a[j]))
                b[k++]=a[i++];
            else
                b[k++]=a[j++];
     for(k=l;k<=r;k++)a[k]=b[k];
    }
}
//int partition1337(int l, int r, int a[])
//{
//
//}
//void quicksort(int l, int r, int a[])
//{
//    if(l<r)
//    {
//        int p=a[r];
//        q=partition1337()
//    }
//}
int main()
{
    int n,  a[500001],i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    cin>>n;
    for(i=0;i<n;i++)cin>>a[i];
    mergesort(0,n-1,a);
    for(i=0;i<n;i++) cout<<a[i]<<" ";
}