Cod sursa(job #2210702)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 7 iunie 2018 18:34:37
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

vector<int> v;

int partitionn(int l, int r){
  int pivot = rand() % (r - l + 1) + l;
  swap(v[r], v[pivot]);

  int i = l;
  int j = l;
  int x = v[r];

  while(j != r){
    if(v[j] >= x){
      j++;
    }else{
      swap(v[j], v[i]);
      i++;
      j++;
    }
  }
  swap(v[i], v[r]);
  return i;
}

void quick_sort(int l, int r){
  if(l == r || l > r){
    return;
  }
  int q = partitionn(l, r);

  quick_sort(l, q - 1);
  quick_sort(q + 1, r);
}

void q_sort(){
  quick_sort(0, v.size() - 1);
}

int main()
{
  srand(time(NULL));
  ifstream f("algsort.in");
  ofstream g("algsort.out");

  int n, x;

  f >> n;
  for(int i = 0; i < n; ++i){
    f >> x;
    v.push_back(x);
  }
  q_sort();

  for(int i = 0; i < n; ++i){
    g << v[i] << ' ';
  }
  return 0;
}