Pagini recente » Cod sursa (job #795142) | Cod sursa (job #1199456) | Cod sursa (job #2036418) | Cod sursa (job #2630278) | Cod sursa (job #2184187)
#include <fstream>
#include <cstdio>
#include <stdlib.h>
#include <ctime>
using namespace std;
//ifstream fin ("algsort.in");
//ofstream fout ("algsort.out");
FILE *fin = fopen ("algsort.in","r");
FILE *fout = fopen ("algsort.out","w");
int n,i,p,v[500002];
int poz (int st,int dr){
int x = st + rand() % (dr-st+1);
swap ( v[st], v[x]);
int dst = 0;
int ddr = -1;
int aux;
while (st < dr){
if (v[st] > v[dr]){
swap (v[st],v[dr]);
aux = dst;
dst = -ddr;
ddr = -aux;
}
st += dst;
dr += ddr;
}
return st;
}
void sorteaza (int st,int dr){
if (st <= dr){
int p = poz (st,dr);
sorteaza (st,p-1);
sorteaza (p+1,dr);
}
}
int main (){
//fin>>n;
//for (i=1;i<=n;i++)
// fin>>v[i];
fscanf (fin,"%d",&n);
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
srand (time(0));
/// functia rand returneaza un numar aleator intre 0 si 32000
/*
for (i=n-1;i>=3;i--){
p = 1 + rand() % (i-1);
swap (v[p],v[i]);
}
*/
sorteaza (1,n);
for (i=1;i<=n;i++)
fprintf (fout,"%d ",v[i]);
// fout<<v[i]<<" ";
return 0;
}