Cod sursa(job #661305)

Utilizator sorina.vasileVasile Sorina sorina.vasile Data 14 ianuarie 2012 11:51:06
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream.h>
#include<iostream.h>
int a[500001];

void qsort(int a[],int st,int dr){
int temp,min,max,mijl;
mijl = a[st+(dr-st)/2]; //luam mijlocul intervalului
min = st; max = dr;
do{
while(a[min] < mijl) min++;
while(a[max] > mijl) max--;
  if(min <= max) //interschimbare
{temp = a[min];
 a[min++] = a[max];
 a[max--] = temp;}
}while(min <= max); //la fiecare pas sortam "mai bine" intervalul st-dr
                    //cand numai avem ce face schimbam intervalul
if(st < max) qsort(a,st,max); 
if(dr > min) qsort(a,min,dr);
}


int main (){
int n, i=1,val;

fstream f("algsort.in",ios::in);
fstream g("algsort.out",ios::out);

f>>n; 
for(i=1;i<=n;i++)
{f>>val;
a[i]=val;}

qsort(a,1,n);

for(i=1;i<=n;i++)
g<<a[i]<<" ";
	
return 1;	
}