Cod sursa(job #1539205)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 30 noiembrie 2015 14:45:08
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <string.h>
#include <algorithm>

using namespace std;

int partition(int *a, int st, int dr, int pivot) {
	swap(a[pivot], a[dr]);
	int l = st;
	for(int i = st ; i < dr ; ++ i)
		if(a[i] < a[dr]) {
			swap(a[l ++], a[i]);
		}
	swap(a[dr], a[l]);
	return l;
}

void quicksort(int *a, int st, int dr) {
	if(st >= dr)
		return ;
	int pivot = rand() % (dr - st + 1) + st;
	int ind = partition(a, st, dr, pivot);
	quicksort(a, st, ind - 1);
	quicksort(a, ind + 1, dr);
}

int main() {
	srand(time(NULL));
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n;
	fin >> n;
	int a[n];
	for(int i = 0 ; i < n ; ++ i)
		fin >> a[i];
	quicksort(a, 0, n - 1);
	for(int i = 0 ; i < n ; ++ i)
		fout << a[i] << ' ';
}