Pagini recente » Rezultatele filtrării | Cod sursa (job #484876) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #2442756)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
void swap(int * arr, int l, int r)
{
int tmp = arr[l];
arr[l] = arr[r];
arr[r] = tmp;
}
int partition(int * arr, int start, int end)
{
int pivot = arr[start];
int idx = start + 1;
for (int i = start + 1; i <= end; i++)
{
if (arr[i] < pivot) {
swap(arr, idx++, i);
}
}
swap(arr, idx - 1, start);
return idx - 1;
}
void quicksort(int * arr, int start, int end)
{
if (start < end) {
int pivot = partition(arr, start, end);
quicksort(arr, start, pivot - 1);
quicksort(arr, pivot + 1, end);
}
}
int main()
{
// ifstream fin("algsort.in");
// ofstream fout("algsort.out");
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
scanf("%d", &n);
//fin >> n;
int *arr = new int[n];
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
//fin >> arr[i];
}
random_shuffle(arr, arr + n);
quicksort(arr, 0, n - 1);
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
//fout << arr[i] << " ";
}
// fin.close();
// fout.close();
return 0;
}