Pagini recente » Cod sursa (job #1451161) | Cod sursa (job #2770770) | Cod sursa (job #901043) | Cod sursa (job #2759063) | Cod sursa (job #484208)
Cod sursa(job #484208)
#include<fstream>
#include<cstdlib>
#define inf "algsort.in"
#define outf "algsort.out"
#define NMax 500100
using namespace std;
fstream f(inf,ios::in),g(outf,ios::out);
int v[NMax],n;
void read()
{
f>>n;
for(int i=1; i<=n; i++ ) f>>v[i];
}
int part(int li,int ls)
{
int st = li, dr = ls;
int x=0,y=-1;
srand( time(NULL) );
int p = li + rand() % (ls-li+1);
swap( v[li], v[p] );
while( st<dr )
{
if( v[st]>v[dr] )
{
swap( v[st], v[dr] );
int t=y;
y = -x;
x = -t;
}
st += x; dr += y;
}
return st;
}
void sort(int li,int ls)
{
if( li<ls )
{
int k = part(li,ls);
sort(li,k);
sort(k+1,ls);
}
}
void solve()
{
sort(1,n);
for(int i=1; i<=n; i++) g<<v[i]<<" ";
}
int main()
{
read(); solve();
f.close(); g.close();
return 0;
}