Cod sursa(job #1315568)

Utilizator VladutZ94FMI Chichirau Vlad Vasile VladutZ94 Data 12 ianuarie 2015 21:58:06
Problema Sortare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <cstdio>

using namespace std;


int a[50];
void merge(int,int,int);
void merge_sort(int low,int high)
{
    int mid;
    if(low<high)
    {
        mid=(low+high)/2;
        merge_sort(low,mid);
        merge_sort(mid+1,high);
        merge(low,mid,high);
    }
}

void merge(int low,int mid,int high)
{
    int h,i,j,b[50],k;
    h=low;
    i=low;
    j=mid+1;

    while((h<=mid)&&(j<=high))
    {
        if(a[h]<=a[j])
        {
            b[i]=a[h];
            h++;
        }
        else
        {
            b[i]=a[j];
            j++;
        }
        i++;
    }
    if(h>mid)
    {
        for(k=j;k<=high;k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    else
    {
        for(k=h;k<=mid;k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    for(k=low;k<=high;k++)
        a[k]=b[k];
}

int main()
{
    freopen ("mergesort.in","r",stdin);
    freopen ("mergesort.out","w",stdout);
    int num,i;
    scanf("%d",&num);
    for(i=1;i<=num;i++)
        scanf("%d",&a[i]);
    merge_sort(1,num);
    for(i=1;i<=num;i++)
        printf("%d ",a[i]);
    return 0;
}