Cod sursa(job #1010870)

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

void sort(int *v, int n)
{
  if (n <  0) return;
  if (n < 1) return;    

  //cout << "N este:" << n << " iar pivotul este: " << v[0] << endl;

  int pivot = v[0];
  
  // gasim lista < pivot in vector
  int *lesser = new int[n]; int k = 0;
  for (int i = 0; i < n; i++)
    if (v[i] < pivot)
    {        
      lesser[k++] = v[i];
      //cout << v[i] << "este mai mic decat: " << pivot << endl;
    }
  
  // sortam lesser
  sort(lesser, k);

  // afisam pivotul
  cout /*<< "NR SORTAT ESTE: "*/ << pivot << /*endl*/ " ";

  // gasim lista > pivot in vector
  int *greater = new int[n]; int l = 0;
  for (int i = 0; i < n; i++)
    if (v[i] > pivot)
    {
      greater[l++] = v[i];      
      //cout << v[i] << "este mai mare decat: " << pivot << endl;
    }

  // sortam greater
  sort(greater, l);
  
  delete[] lesser;
  delete[] greater;
}

int main()
{
  ifstream cin("algsort.in");
  ofstream cout("algsort.out");
    
  int n;
  cin >> n;
  int *v = new int[n];

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

  sort(v, n);
  
  delete[] v;
  
  cin.close();
  cout.close();
}