Cod sursa(job #394874)

Utilizator sorecau_catalinSorecau Catalin sorecau_catalin Data 11 februarie 2010 19:10:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int  a[500001];
void Sortare( int stanga, int dreapta);
int i,j,n;

int main()
{
	int ls,ld;
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>a[i];
	ls=0;ld=n;
	Sortare(ls,ld);
	for(i=1;i<=n;i++)
		fout<<a[i]<<' ';
	fout.close();
	fin.close();
	return 0;
}
void Sortare( int stanga, int dreapta)
{  
      int i = stanga, j = dreapta;  
      int tmp;  
      int pivot = a[(stanga + dreapta) / 2];  
      while (i <= j) {  
            while (a[i] < pivot)  
                  i++;  
            while (a[j] > pivot)  
                  j--;  
            if (i <= j) {  
                  tmp = a[i];  
                  a[i] =a[j];  
                  a[j] = tmp;  
                  i++;  
                  j--;  
            }  
      };  
      if (stanga < j)  
           Sortare( stanga, j);  
      if (i < dreapta)  
            Sortare( i, dreapta);  
}