Pagini recente » Cod sursa (job #876557) | Cod sursa (job #1466627) | Cod sursa (job #3171687) | Cod sursa (job #2300678) | Cod sursa (job #2215855)
#include<cstdio>
#include<cstdlib>
#include<ctime>
#define MAX_N 500000
using namespace std;
int v[MAX_N], n;
void read() {
FILE* fin = fopen("algsort.in","r");
fscanf(fin,"%d",&n);
for(int i = 0; i < n; i++)
fscanf(fin,"%d",&v[i]);
}
void quickSort(int Begin, int End) {
int b = Begin, e = End, pivot = v[b+rand()%(e-b+1)];
while(b <= e) {
while(v[b] < pivot) b++;
while(v[e] > pivot) e--;
if(b <= e) {
int tmp = v[b];
v[b] = v[e];
v[e] = tmp;
b++;
e--;
}
}
if(Begin < e) quickSort(Begin,e);
if(b < End) quickSort(b,End);
}
void write() {
FILE* fout = fopen("algsort.out","w");
for(int i = 0; i < n; i++)
fprintf(fout,"%d ",v[i]);
fprintf(fout,"\n");
fclose(fout);
}
int main() {
read();
srand(time(NULL));
quickSort(0,n-1);
write();
return 0;
}