Cod sursa(job #1010690)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 15 octombrie 2013 13:54:49
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
#include <iostream>
using namespace std;

#define NMAX 500010
int v[NMAX];

void interclasare(int init, int pivot, int fin)
{
     int x = NMAX;
     int a[x],i,j,k=0;
     i=init;
     j=pivot+1;
     while((i<=pivot)&&(j<=fin))
     {
          if(v[i]<v[j]) a[k++]=v[i++];
          else a[k++]=v[j++];                     
     }
     while(i<=pivot) a[k++]=v[i++];
     while(j<=fin)   a[k++]=v[j++];
     int t=init;
     for(k=0;k<=(fin-init);k++) v[t++]=a[k];
}
 
void merge_sort(int init,int fin)
{
     if(fin-init>=1)
     {
            int temp=(init+fin)/2;    
            merge_sort(init,temp);
            merge_sort(temp+1,fin);
            interclasare(init,temp,fin);
     }
}
 

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

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

    merge_sort(1, n);

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

    cin.close();
    cout.close();

    return 0;
}