#include <iostream>
using namespace std;
void printArray(int array[], int len) {
for (int i = 0; i < len; i++) {
cout << array[i] << " ";
}
cout << endl;
}
void swap(int* a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int lo, int hi) {
int pivot = arr[hi];
int i = lo - 1;
for (int j = lo; j <= hi-1; j++) {
if (arr[j] <= pivot) {
i +=1;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i+1], &arr[hi]);
return i+1;
}
void quicksort(int arr[], int lo, int hi) {
if (lo < hi) {
int p = partition(arr, lo, hi);
quicksort(arr, lo, p-1 );
printArray(arr, 8);
quicksort(arr, p + 1, hi);
}
}
int main() {
int len;
int array[] = {2,8,7,1,3,5,6,4};
len = (sizeof(array)/sizeof(array[0]));
quicksort(array, 0, len-1);
printArray(array, len);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIHByaW50QXJyYXkoaW50IGFycmF5W10sIGludCBsZW4pIHsKCWZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKCQljb3V0IDw8IGFycmF5W2ldIDw8ICIgIjsKCX0KCWNvdXQgPDwgZW5kbDsKfQp2b2lkIHN3YXAoaW50KiBhLCBpbnQgKmIpIHsKCWludCB0ZW1wID0gKmE7CgkqYSA9ICpiOwoJKmIgPSB0ZW1wOwp9CgppbnQgcGFydGl0aW9uKGludCBhcnJbXSwgaW50IGxvLCBpbnQgaGkpIHsKCWludCBwaXZvdCA9IGFycltoaV07CglpbnQgaSA9IGxvIC0gMTsKCWZvciAoaW50IGogPSBsbzsgaiA8PSBoaS0xOyBqKyspIHsKCQlpZiAoYXJyW2pdIDw9IHBpdm90KSB7CgkJCWkgKz0xOwoJCQlzd2FwKCZhcnJbaV0sICZhcnJbal0pOwoJCX0KCX0KCXN3YXAoJmFycltpKzFdLCAmYXJyW2hpXSk7CglyZXR1cm4gaSsxOwp9Cgp2b2lkIHF1aWNrc29ydChpbnQgYXJyW10sIGludCBsbywgaW50IGhpKSB7CglpZiAobG8gPCBoaSkgewoJCWludCBwID0gcGFydGl0aW9uKGFyciwgbG8sIGhpKTsKCQlxdWlja3NvcnQoYXJyLCBsbywgcC0xICk7CgkJcHJpbnRBcnJheShhcnIsIDgpOwoJCXF1aWNrc29ydChhcnIsIHAgKyAxLCBoaSk7Cgl9Cn0KaW50IG1haW4oKSB7CglpbnQgbGVuOwoJaW50IGFycmF5W10gPSB7Miw4LDcsMSwzLDUsNiw0fTsKCWxlbiA9IChzaXplb2YoYXJyYXkpL3NpemVvZihhcnJheVswXSkpOwoJcXVpY2tzb3J0KGFycmF5LCAwLCBsZW4tMSk7CglwcmludEFycmF5KGFycmF5LCBsZW4pOwoJcmV0dXJuIDA7Cn0=