Cod sursa(job #869848)

Utilizator cioionutFMI Ionut Ciocoiu cioionut Data 2 februarie 2013 14:06:23
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <fstream>
#define nmax 500001
using namespace std;
 
void sort_rapid(int tablou[],int prim,int ultim)
	{
     int temp,min,max,separator_lista;
     min=prim;
     max=ultim;
	  separator_lista=tablou[(prim+ultim)/2];
     do {
          while (tablou[min]<separator_lista) min++;
			 while (tablou[max]>separator_lista) max--;
          if (min<=max) { temp=tablou[min];
								  tablou[min++]=tablou[max];
								  tablou[max--]=temp;
								}
		  }
	  while (min<=max);
	  if (prim<max) sort_rapid(tablou,prim,max);
	  if (min<ultim) sort_rapid(tablou,min,ultim);
	 }
     

int main()
{   int i,val[nmax],N;
	 ifstream f("algsort.in");
    ofstream g("algsort.out");
	 f>>N;
	 for(i=0; i<=N; ++i)
	 f>>val[i];
	 sort_rapid(val,0,N-1);
	 for( i=0; i<=N; ++i) g<<val[i]<<" ";
	 f.close();
	 g.close();
 return 0;

}