Cod sursa(job #2151827)

Utilizator costi2Radu Canu costi2 Data 4 martie 2018 22:33:22
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

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

void merge(vector<int>& v,int inf, int sup)
{
  int k = 0;
  int i = inf;
  int mid = (inf + sup) / 2;
  int j = mid + 1;
  int temp[100];
  while(i <= mid && j <= sup)
  {
	  if(v[i] > v[j])
	  {
		  temp[k++] = v[j++];
	  }
	  else
	  	  temp[k++] = v[i++];
  }
  while(i <= mid)
  {
	  temp[k++] = v[i++];
  }
  while(j <= sup)
  {
	temp[k++] = v[j++];
  }
  k = 0;
  for(int i = inf; i <= sup; i++)
  {
	  v[i] = temp[k++];
  }

}
void mergeSort(vector<int>& v, int inf, int sup)
{
  if(inf == sup)
  	return;
  int mid = (inf + sup) / 2;
  mergeSort(v, mid+1, sup);
  mergeSort(v, inf, mid);
  merge(v,inf,sup);
}

int main()
{
  int dim;
  vector<int> v;
  in >> dim;
  int x;
  for(int i = 0; i < dim; i++)
  {
	in >> x;
   	v.push_back(x);
  }
  mergeSort(v,0,dim-1);
  for (int i : v)
  	out << i <<' ';
  return 0;
}