Cod sursa(job #1533578)

Utilizator TeodorCotetCotet Teodor TeodorCotet Data 22 noiembrie 2015 18:51:50
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>


using namespace std;


ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int NMAX = 500002;

int k; int n;

int v[NMAX];

void quick(int st, int dr) {

	if(st >= dr)
		return ;

	int p = dr ;//st + rand() % (dr - st + 1);

	//swap(v[dr], v[p]);

	int index = st - 1;

	//intre st si index elemente mai mici decat pivotul v[dr] inclusiv
	//intre index + 1 si dr elemente mai mare sau egale ca pivotul

	for(int i = st; i < dr ; ++i)
		if(v[i] < v[dr]) {
			index++;
			swap(v[i], v[index]);
		}

	swap(v[dr], v[index + 1]);

	quick(st, index);
	quick(index + 2, dr);

}


int main() {

	srand(time(NULL));

	fin >> n ;
	for(int i = 1 ; i <= n ; ++i)
		fin >> v[i];
	quick(1, n);

	for(int i = 1; i <= n; ++i)
		fout << v[i] << " ";
	return 0;
}