Pagini recente » Cod sursa (job #1886087) | Cod sursa (job #3312000) | Cod sursa (job #1728511) | Cod sursa (job #1934173) | Cod sursa (job #2947807)
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <time.h>
const uint32_t MAX_N = 500000;
void Sort(uint32_t n, uint32_t* v) {
if(n < 2)
return;
uint32_t pivot = v[rand() % n];
uint32_t begin = 0, end = n - 1;
while(v[begin] < pivot)
++begin;
while(v[end] > pivot)
--end;
while(begin < end) {
uint32_t aux = v[begin];
v[begin] = v[end];
v[end] = aux;
do
++begin;
while(v[begin] < pivot);
do
--end;
while(v[end] > pivot);
}
Sort(end + 1, v);
Sort(n - end - 1, v + end + 1);
}
int main() {
FILE* fin = fopen("algsort.in", "r");
FILE* fout = fopen("algsort.out", "w");
uint32_t n, v[MAX_N];
fscanf(fin, "%u", &n);
for(uint32_t i = 0; i < n; ++i)
fscanf(fin, "%u", v + i);
Sort(n, v);
for(uint32_t i = 0; i < n; ++i)
fprintf(fout, "%u ", v[i]);
fclose(fin);
fclose(fout);
return 0;
}