Pagini recente » Cod sursa (job #2391310) | Cod sursa (job #70336) | Cod sursa (job #3702) | Cod sursa (job #572873) | Cod sursa (job #2358755)
#include <iostream>
#include <vector>
#include <cstdio>
#include <queue>
using namespace std;
int compareElements(int a, int b) {
//cntComparisons++;
return a - b;
}
void swapElements(int &a, int &b) {
//cntExchanges++;
swap(a, b);
}
void quicksort(vector<int> &arr, int left, int right) {
int i = left; int j = right;
int pivot = (left + right) / 2;
while (i <= j) {
while (i < right && compareElements(arr[i], arr[pivot]) < 0)
i++;
while (left < j && compareElements(arr[pivot], arr[j]) < 0)
j--;
if (i <= j) {
swapElements(arr[i], arr[j]);
i++; j--;
}
}
if (left < j)
quicksort(arr, left, j);
if (i < right)
quicksort(arr, i, right);
}
void runQuicksort(vector<int> &arr) {
quicksort(arr, 0, (int)arr.size() - 1);
/*SortInfo sortInfo;
sortInfo.cntComparisons = cntComparisons;
sortInfo.cntExchanges = cntExchanges;
sortInfo.sortTime = ((double)time) / CLOCKS_PER_SEC;
return sortInfo;*/
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
ios_base::sync_with_stdio(false);
int N; cin >> N;
vector<int> arr;
for (int i = 0; i < N; ++i) {
int x; cin >> x;
arr.push_back(x);
}
runQuicksort(arr);
for (auto &it: arr)
cout << it << ' ';
return 0;
}