Pagini recente » Cod sursa (job #669093) | Cod sursa (job #2158106) | Cod sursa (job #319855) | Cod sursa (job #2287393) | Cod sursa (job #2987749)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
const int NMAX = 5e5 + 5;
int n, a[NMAX];
void afisare(){
for(int i=1;i<=n;++i){
g << a[i] << " ";
}
}
int medianOfThree(int a, int b, int c){
if((a < b && b < c) || (c < b && b < a)){
return b;
}
else if((b < a && a < c) || (c < a && a < b)){
return a;
}
else{
return c;
}
}
void quicksort(int a[], int st, int dr){
if(st < dr){
// int range = dr - st + 1;
// int m1 = (rand() % range) + st;
// int m2 = (rand() % range) + st;
// int m3 = (rand() % range) + st;
// int pivot = medianOfThree(a[m1], a[m2], a[m3]);
int pivot = a[dr];
int i = st - 1;
for(int j=st;j<=dr;++j){
if(a[j] < pivot){
swap(a[++i], a[j]);
}
}
swap(a[++i], a[dr]);
quicksort(a, st, i - 1);
quicksort(a, i + 1, dr);
}
}
int main(){
f >> n;
for(int i=1;i<=n;++i){
f >> a[i];
}
quicksort(a, 1, n);
afisare();
return 0;
}