Cod sursa(job #2313614)

Utilizator KaryamKaryam Ahmad Karyam Data 7 ianuarie 2019 11:06:46
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5+2;

FILE *fin  = freopen("algsort.in", "r", stdin);
FILE *fout = freopen("algsort.out", "w", stdout);

int n;
int a[maxn];

int partition(int left, int right) {
	int pivot = left + rand() % (right-left+1);
	swap(a[pivot], a[left]);
	pivot = a[left];
	int i = left-1, j = right+1;

	while (i < j) {
		do { ++i; } while (a[i] < pivot);
		do { --j; } while (a[j] > pivot);
		if (i >= j)
			return j;
		swap(a[i], a[j]);
	}
}

void quicksort(int left, int right) {
  if (left < right) {
		int pi = partition(left, right);
		quicksort(left, pi);
		quicksort(pi+1, right);
	}
}

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

	quicksort(0, n-1);

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