Cod sursa(job #261146)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 17 februarie 2009 21:42:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <stack>

using namespace std;

vector<int> V;

int partition (int Left, int Right){
	int piv, aux, i = Left - 1, j = Right + 1;
	piv = V[(Left + Right) >> 1];
	while (1){
		do {++i;} while (V [i] < piv);
		do {--j;} while (V [j] > piv);
		if (i < j){
			aux  = V[i];
			V[i] = V[j];
			V[j] = aux;
		}
		else
			return j;
	}
}

void quick_sort(int Left, int Right){
	if (Left < Right){
		int Middle = partition (Left, Right);
		quick_sort (Left, Middle);
		quick_sort (Middle + 1, Right);
	}
}

int main(){
    int N, i, a;

    freopen("algsort.in", "r",  stdin);
    freopen("algsort.out", "w", stdout);

    scanf("%d", &N);

    srand(time(NULL));
    for (i = 1; i <= N; ++i){
        scanf("%d", &a);
        V.push_back(a);
    }
    quick_sort(0, N - 1);
    for (i = 0; i < N; ++i)
        printf("%d ", V[i]);
}