#include #include #include void printt(int t[], int n) { printf("["); for (int i = 0; i < n; i++) { printf("%d,", t[i]); } printf("]\n"); } void swap(int t[], int i, int j) { int tmp = t[i]; t[i] = t[j]; t[j] = tmp; } void quicksort(int t[], int n) { if (n <= 1) { return; } int a = 0; int b = n - 1; int p = t[n - 1]; while (a < b) { if (t[a] <= p) a++; else if (t[b] >= p) b--; else { swap(t, a, b); } } swap(t, b, n - 1); quicksort(t, b); quicksort(t + b + 1, n - b - 1); } const int t[] = {5, 3, 9, 0, 5, 0}; const int sorted[] = {0, 0, 3, 5, 5, 9}; const int n = 6; int main() { int t1[n]; memcpy(t1, t, n * sizeof(int)); quicksort(t1, n); assert(memcmp(t1, sorted, n * sizeof(int)) == 0); }