Pagini recente » Cod sursa (job #3269553) | Cod sursa (job #2726822) | Cod sursa (job #583803) | Cod sursa (job #2909089) | Cod sursa (job #2900136)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
//ifstream f("D:/Proiecte/Clion/Projects/hashuri.in");
//ofstream g("D:/Proiecte/Clion/Projects/hashuri.out");
int n, v[500005];
int pivot(int v[], int s, int d){
int mid = (s + d)/2;
//median of s, mid, d
if(v[mid] < v[s])
swap(v[s], v[mid]);
if(v[d] < v[s])
swap(v[s], v[d]);
if(v[mid] < v[d])
swap(v[mid], v[d]);
// Lomuto classic partition
int piv_element = v[d];
int piv_index = s - 1;
for(int j = s; j < d; ++j)
if(v[j] <= piv_element) {
++piv_index;
swap(v[piv_index], v[j]);
}
++piv_index;
swap(v[piv_index], v[d]);
return piv_index;
}
void QuickSort(int v[], int s, int d){
if(s < d){
int piv = pivot(v, s, d);
QuickSort(v, s, piv - 1);
QuickSort(v, piv + 1, d);
}
}
int main(){
f >> n;
for(int i = 0; i < n; ++i)
f >> v[i];
QuickSort(v, 0, n - 1);
for(int i = 0; i < n; ++i)
g << v[i] << ' ';
f.close();
g.close();
return 0;
}