#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y) {
int t = *x;
*x = *y;
*y = t;
}
int partition(int arr[], int p, int q) {
swap(arr + (rand() % (q - p + 1)) + p, arr + q);
int i = p;
for (int j = p; j < q; j++) {
if (arr[j] < arr[q]) {
swap(arr + i++, arr + j);
}
}
swap(arr + q, arr + i);
return i;
}
void quickSort(int arr[], int p, int q) {
if (p < q) {
int m = partition(arr, p, q);
quickSort(arr, p, m - 1);
quickSort(arr, m + 1, q);
}
}
int main() {
int arr[] = {3, 2, -5, 4, 1}, size = sizeof(arr) / sizeof(int);
quickSort(arr, 0, size - 1);
for (int i = 0; i < size; ++i) {
printf("%d\n", arr[i]);
}
return 0;
}