Cod sursa(job #2482593)

Utilizator stormy_weatherelena cristina stormy_weather Data 28 octombrie 2019 17:13:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;

void quick_sort(vector<int> &a) {
  int n = a.size();
    if (n > 1) {
    int pivot = rand() % n;
    int val = a[pivot];

    vector<int> low, high;
    for (int i = 0; i < n; i++) {
      if (a[i] < val)
        low.push_back(a[i]);
      else if (a[i] > val)
        high.push_back(a[i]);
    }
    quick_sort(low);
    quick_sort(high);

    a.clear();
    a.insert(a.end(), low.begin(), low.end());
    a.insert(a.end(), n - low.size() - high.size(), val);
    a.insert(a.end(), high.begin(), high.end());
  }
  return;
}

int main() {

  #ifdef INFOARENA
  ifstream cin("algsort.in");
  ofstream cout("algsort.out");
  #endif

  int n; cin >> n;

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

  quick_sort(a);

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

  return 0;
}