Cod sursa(job #631455)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 8 noiembrie 2011 08:49:16
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
using namespace std;
int v[500500],n;
inline int partition(int left, int right, int pivot) {
	int i, index=left;
	swap(v[right],v[pivot]);
	for(i=left;i<right;i++)
		if(v[i]<v[right])
			swap(v[i],v[index++]);
	swap(v[right],v[index]);
	
	return index;
}
void quicksort(int left, int right) {
	if(left<right) {
		int mij=(left+right)>>1;
		mij=partition(left, right, mij);
		quicksort(left, mij-1);
		quicksort(mij+1, right);
	}
}
int main() {
	int i;
	ifstream in("algsort.in");
	for(i=0,in>>n;i<n;in>>v[i],i++);
	in.close();
	quicksort(0,n-1);
	ofstream out("algsort.out");
	for(i=0;i<n;out<<v[i]<<" ",i++);
	out.close();
	return 0;
}