Cod sursa(job #1000437)

Utilizator mihaiSimuSimu Mihai mihaiSimu Data 22 septembrie 2013 20:46:35
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <vector>
using namespace std;

int pivot(vector<int>* a,int lo,int hi) {
	int i=lo+1,j=hi;
	while(true){
		while((*a)[i]<=(*a)[lo]) {
			i++;
			if(i==hi) break;
		}
		while((*a)[lo]<=(*a)[j]){
			j--;
			if(j==lo) break;
		}
		if(j<=i) break;
		int aux = (*a)[i];(*a)[i]=(*a)[j];(*a)[j]=aux;
	}
	int aux = (*a)[j];(*a)[j]=(*a)[lo];(*a)[lo]=aux;
	return j;
}

void sort(vector<int>* a,int lo,int hi) {
	if(hi<=lo) return;
	int k = pivot(a,lo,hi);
	sort(a,lo,k-1);
	sort(a,k+1,hi);
}

int main(){
	int n;
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	cin>>n;
	vector<int> a(n);
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	sort(&a,0,n-1);
	for(int i=0;i<a.size();i++)
		cout<<a[i]<<" ";
	return 0;
}