Pagini recente » Cod sursa (job #3189127) | Cod sursa (job #2514990)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define L 500003
int v[L], w[L], n;
using namespace std;
void qsort(int st, int dr){
int p, q1, q2, i, cq1;
if(st>=dr)
return;
p=rand()%(dr-st+1)+st;
q1=st;
q2=dr;
for(i=st; i<=dr; i++)
if(v[i]<v[p])
w[q1++]=v[i];
else if(v[i]>v[p])
w[q2--]=v[i];
cq1=q1-1;
for(; q1<=q2; q1++)
w[q1]=v[p];
for(i=st; i<=dr; i++)
v[i]=w[i];
qsort(st, cq1);
qsort(q2+1, dr);
}
int main(){
FILE *fin, *fout;
int i;
fin=fopen("algsort.in", "r");
fout=fopen("algsort.out", "w");
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++)
fscanf(fin, "%d", &v[i]);
srand(time(0));
qsort(1, n);
for(i=1; i<=n; i++)
fprintf(fout, "%d ", v[i]);
fclose(fin);
fclose(fout);
return 0;
}