Pagini recente » Cod sursa (job #1997952) | Cod sursa (job #161639) | Cod sursa (job #282625) | Monitorul de evaluare | Cod sursa (job #661306)
Cod sursa(job #661306)
#include<fstream>
#include<iostream>
int a[500001];
using namespace std;
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;
}