Cod sursa(job #1834124)

Utilizator alindima99Alin Dima alindima99 Data 23 decembrie 2016 21:56:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#include <stdlib.h>

using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

void interclasare(long v[], long a, long m, long b)
{
    long i=a,j=m+1,k=0,r[b-a+1],t;

    while(i<=m && j<=b){
        if(v[i]<v[j])
            r[++k]=v[i++];
        else if(v[j]<v[i])
            r[++k]=v[j++];
        else{
            r[++k]=v[i++];
            r[++k]=v[j++];
        }
    }

    for(t=i;t<=m;t++)
        r[++k]=v[i++];

    for(t=j;t<=b;t++)
        r[++k]=v[j++];

    k=1;
    for(t=a;t<=b;t++)
        v[t]=r[k++];
}

void merge_sort(long v[], long st, long dr)
{
    long m=(dr+st)/2;

    if(st<dr){
        merge_sort(v,st,m);
        merge_sort(v,m+1,dr);
        interclasare(v,st,m,dr);
    }
}

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}

int main()
{
    long n,i;

    cin>>n;
    long v[n];

    for(i=0;i<n;i++)
        cin>>v[i];

    qsort(v,n,sizeof(long),compare);

    for(i=0;i<n;i++)
        cout<<v[i]<<" ";

    return 0;
}