Pagini recente » Cod sursa (job #3300208) | Cod sursa (job #238883) | Cod sursa (job #2925435) | Cod sursa (job #3312200) | Cod sursa (job #3318852)
#include <iostream>
#include <fstream>
#include <stdint.h>
#include <time.h>
#include <math.h>
#include <utility>
const int32_t MAX_N = 500000;
int32_t vec[MAX_N];
void QuickSort(int32_t left, int32_t right) {
if(left >= right)
return;
int32_t len = right - left + 1;
int32_t randVal = rand() * (RAND_MAX + 1) + rand();
int32_t pivot = vec[randVal % len + left];
int32_t start = left, end = right;
while(vec[start] < pivot)
++start;
while(vec[end] > pivot)
--end;
while(start < end) {
std::swap(vec[start], vec[end]);
++start;
--end;
while(vec[start] < pivot)
++start;
while(vec[end] > pivot)
--end;
}
QuickSort(left, end);
QuickSort(end + 1, right);
}
int main() {
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
srand(time(nullptr));
int32_t n;
fin >> n;
for(int32_t i = 0; i != n; ++i)
fin >> vec[i];
QuickSort(0, n - 1);
for(int32_t i = 0; i != n; ++i)
fout << vec[i] << ' ';
fin.close();
fout.close();
return 0;
}