Cod sursa(job #639694)

Utilizator Agent008Cristi Poputea Agent008 Data 23 noiembrie 2011 19:50:40
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<fstream.h>
#include<iostream.h>
int divide(int st,int dr);
void quicksort(int p,int q);
int a[500100],n;
int main()
{
	int i;
	ifstream in("algsort.in");
	for(i=0,in>>n;i<n;in>>a[i],i++);
	in.close();
	quicksort(0,n-1);
	ofstream out("algsort.out");
	for(i=0;i<n;out<<a[i]<<" ",i++);
	out.close();
	return 0;
}
void quicksort(int p,int q)
{
	int m=divide(p,q);
	if(m-1>p)
		quicksort(p,m-1);
	if(m+1<q)
		quicksort(m+1,q);
}
int divide(int st,int dr)
{
	int x=a[st];
	while(st<dr)
	{
		while(st<dr && a[dr]>=x)
			dr--;
		a[st]=a[dr];
		while(st<dr && a[st]<=x)
			st++;
		a[dr]=a[st];
	}
	a[st]=x;
	return st;
}