Cod sursa(job #973464)

Utilizator AndupkIonescu Alexandru Andupk Data 14 iulie 2013 16:11:56
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;

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

long long quick_sort(int a[600001] , int n);
long long partition(int a[600001] , int left , int right);

long long quick_sort(int a[600001] ,int  n)
{
	return partition(a,0,n-1);
}

long long partition(int a[600001] , int left , int right)
{
	if(right > left ){
		long long aa,b,c;
		int p = a[left] , i = left;
		aa = right - left;
		for(int j=left;j<=right;j++){
			if(a[j] < p){
				swap(a[++i],a[j]);
			}
		}
		swap(a[left],a[i]);
		b = partition(a,left,i-1);
		c = partition(a,i+1,right);
		return aa+b+c;
	}else
		return 0;
	
}

int main()
{
	int n , i=0;
	int a[600001];
	in>>n;
	for(i=0;i<n;i++)
		in>>a[i];
	
	quick_sort(a,i);

	for(int j=0;j<i;j++)
		out<<a[j]<<" ";
	
	return 0;
}