Cod sursa(job #856149)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 15 ianuarie 2013 23:17:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<cstdio>
#include<cstdlib>
#include<string.h>

using namespace std;
int v[500001], c[500001];
int n;
using namespace std;

struct mat { int nr; int dir;};

int partitionare(int st,int dr)
{
 int pivot,p,i,j,aux;
 p=(st+dr)/2;
 pivot=v[p];
 i=st-1;
 j=dr+1;
 while(1)
  {
   do{ i++; } while(v[i]<pivot);
   do{ j--; } while(v[j]>pivot);
   if(i<j)
    {
     aux=v[i];
     v[i]=v[j];
     v[j]=aux;
    }
   else
    return j;
  }
}

void sort(int st,int dr)
{
 int partitie;
 if(st<dr)
  {
   partitie=partitionare(st,dr);
   sort(st,partitie);
   sort(partitie+1,dr);
  }
}		

void read()
{
	int i;
	scanf("%d",&n);
	for (i=1;i<=n;++i)
		scanf("%d",&v[i]);
}

void write()
{
	int i;
	for (i=1;i<=n;++i)
		printf("%d ",v[i]);
}




int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	read();
	sort(1,n);
	write();
}