Pagini recente » Cod sursa (job #2223045) | Cod sursa (job #793321) | Cod sursa (job #1624299) | Cod sursa (job #1181924) | Cod sursa (job #661305)
Cod sursa(job #661305)
#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;
}