#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
void partition(int a[], int l, int r, int* l_end, int* r_start) {
int i = l;
int j = r;
int pivot = a[(l + r) / 2];
while (i <= j) {
while (a[i] < pivot) i++;
while (a[j] > pivot) j--;
if (i <= j) {
swap(&a[i], &a[j]);
i++;
j--;
}
}
*l_end = j;
*r_start = i;
}
void quickSort(int a[], int l, int r) {
if (l < r) {
int m1, m2;
partition(a, l, r, &m1, &m2);
quickSort(a, l, m1);
quickSort(a, m2, r);
}
}
void printArray(int a[], int n) {
for (int i = 0; i < n; i++) {
}
}
int main() {
int data[] = {7, 2, 9, 4, 3, 6, 1, 8, 5};
int n = sizeof(data) / sizeof(data[0]);
printArray(data, n);
quickSort(data, 0, n - 1);
printArray(data, n);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHN3YXAoaW50KiBhLCBpbnQqIGIpIHsKICAgIGludCB0ZW1wID0gKmE7CiAgICAqYSA9ICpiOwogICAgKmIgPSB0ZW1wOwp9CgoKdm9pZCBwYXJ0aXRpb24oaW50IGFbXSwgaW50IGwsIGludCByLCBpbnQqIGxfZW5kLCBpbnQqIHJfc3RhcnQpIHsKICBpbnQgaSA9IGw7CiAgaW50IGogPSByOwogIGludCBwaXZvdCA9IGFbKGwgKyByKSAvIDJdOyAKICB3aGlsZSAoaSA8PSBqKSB7CiAgICB3aGlsZSAoYVtpXSA8IHBpdm90KSBpKys7IAogICAgd2hpbGUgKGFbal0gPiBwaXZvdCkgai0tOyAKICAgIGlmIChpIDw9IGopIHsKICAgICAgc3dhcCgmYVtpXSwgJmFbal0pOwogICAgICBpKys7CiAgICAgIGotLTsKICAgIH0KICB9CiAgKmxfZW5kID0gajsKICAqcl9zdGFydCA9IGk7Cn0KCnZvaWQgcXVpY2tTb3J0KGludCBhW10sIGludCBsLCBpbnQgcikgewogIGlmIChsIDwgcikgewogICAgaW50IG0xLCBtMjsKICAgIHBhcnRpdGlvbihhLCBsLCByLCAmbTEsICZtMik7CiAgICBxdWlja1NvcnQoYSwgbCwgbTEpOwogICAgcXVpY2tTb3J0KGEsIG0yLCByKTsKICB9Cn0KCnZvaWQgcHJpbnRBcnJheShpbnQgYVtdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIiVkICIsIGFbaV0pOwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbigpIHsKICAgIGludCBkYXRhW10gPSB7NywgMiwgOSwgNCwgMywgNiwgMSwgOCwgNX07CiAgICBpbnQgbiA9IHNpemVvZihkYXRhKSAvIHNpemVvZihkYXRhWzBdKTsKCiAgICBwcmludGYoIuOCveODvOODiOWJjTogIik7CiAgICBwcmludEFycmF5KGRhdGEsIG4pOwogICAgcXVpY2tTb3J0KGRhdGEsIDAsIG4gLSAxKTsKICAgIHByaW50Zigi44K944O844OI5b6MOiAiKTsKICAgIHByaW50QXJyYXkoZGF0YSwgbik7CiAgICByZXR1cm4gMDsKfQ==