Pagini recente » Cod sursa (job #3004251) | Cod sursa (job #2812227) | Cod sursa (job #964723) | Cod sursa (job #2905580) | Cod sursa (job #3123243)
#include <fstream>
#include <random>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int N_MAX = 5e5;
int v[N_MAX];
void QuickSort(int begin, int end) {
int b = begin, e = end, pivot = v[begin + rand() % (end - begin)];
while(v[b] < pivot)
++b;
while(v[e] > pivot)
--e;
while(b < e){
int aux = v[b];
v[b] = v[e];
v[e] = aux;
do
++b;
while(v[b] < pivot);
do
--e;
while(v[e] > pivot);
}
if(e - begin + 1 < end - e){
if(end > e + 1)
QuickSort(e + 1, end);
if(e > begin)
QuickSort(begin, e);
}else{
if(e > begin)
QuickSort(begin, e);
if(end > e + 1)
QuickSort(e + 1, end);
}
}
int main() {
int n;
fin >> n;
for(int i = 0; i < n; ++i)
fin >> v[i];
QuickSort(0, n - 1);
for(int i = 0; i < n; ++i)
fout << v[i] << ' ';
fout.put('\n');
fin.close();
fout.close();
return 0;
}