#include #include #define swap(type, a, b) do {type tmp = a; a = b; b = tmp;} while(0) int full; int partition(int* arr, int l, int r) { int pivot = arr[l]; int i = l+1, j = r; while (i <= j) { while (i <= r && arr[i] <= pivot) i++; while (arr[j] > pivot) j--; if (i < j) { swap(int, arr[i], arr[j]); i++; j--; } } swap(int, arr[l], arr[j]); return j; } void quicksort(int* arr, int l, int r) { if (l >= r) return; int p = partition(arr, l, r); for (int x = 0; x < full; ++x) { printf("%d ", arr[x]); } printf("\n"); quicksort(arr, l, p - 1); quicksort(arr, p + 1, r); } int main(){ int n; scanf("%d", &n); full = n; int* arr = (int*)malloc(n * sizeof(int)); for(int i = 0; i < n; ++i){ scanf("%d", &arr[i]); } quicksort(arr, 0, n - 1); for(int i = 0; i < n; ++i){ printf("%d ", arr[i]); } printf("\n"); free(arr); return 0; }