Cod sursa(job #1212320)

Utilizator PaueyPaula Nicoleta Gradu Pauey Data 24 iulie 2014 13:49:54
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>
using namespace std;

int v[1000000], nr;
int n[1000000];

void interclasare(int i, int j, int k, int l) {
   int elem = i, ic = i;
   while(i <= j && k <= l) {
      if(v[i] < v[k]) {
         n[elem++] = v[i];
         ++i;
      }
      else {
         n[elem++] = v[k];
         ++k;
      }
   }
   while(i <= j) {
      n[elem++] = v[i];
      ++i;
   }
   while(k <= l) {
      n[elem++] = v[k];
      ++k;
   }
   for(int a = ic; a <= l; ++a)
      v[a] = n[a];
}

void merge_sort(int i, int j) {
   if(j == i) return;
   merge_sort(i, (i + j)/2);
   merge_sort((j + i)/2 + 1, j);
   interclasare(i, (j + i)/2, (j + i)/2 + 1, j);
}

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

    cin >> nr;
    for(int i = 1; i <= nr; ++i)
      cin >> v[i];

    merge_sort(1, nr);

    for(int i = 1; i <= nr; ++i)
      cout << v[i] << ' ';
    return 0;
}