Cod sursa(job #1016041)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 25 octombrie 2013 17:28:38
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;

void swap (int *v, int i1, int i2)
{
  int aux = v[i1];
  v[i1] = v[i2];
  v[i2] = aux;
}

void quickSort (int *v, int left, int right)
{
  // Do nothing
  if (left >= right)
    return;

  // Set seed
  // srand(time(NULL));
  // Select a idx between left and right
  int pivot = rand() % (right - left) + left;
  
  swap (v, pivot, left);
  int last = left;
  
  for (int i = left + 1; i <= right; ++i)
    if (v[i] < v[left])
      swap (v, ++last, i);

  swap (v, last, left);

  quickSort (v, left, last - 1);
  quickSort (v, last - 1, right);
}

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

  // Set seed
  srand(time(NULL));

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

  quickSort(v, 0, n - 1);

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

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

  return 0;
}