#include<stdio.h>
void swap(int *a, int *b){
// ++swaps;
*a = *a^*b;
*b = *a ^ *b;
*a = *a ^ *b;
}
int partition (int arr[], int low, int high)
{
int pivot = arr[high]; // pivot
int i = (low - 1); // Index of smaller element
for (int j = low; j <= high- 1; j++)
{
// If current element is smaller than or
// equal to pivot
if (arr[j] <= pivot)
{
i++; // increment index of smaller element
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
int pin = partition(arr, low, high);
quickSort(arr, low, pin - 1);
quickSort(arr, pin + 1, high);
}
}
/* Function to print an array */
void printArray(int s[], int size)
{
int i;
for (i=0; i < size; i++)
}
int main()
{
int s[] = {1,2,3,4,5};
int n = sizeof(s)/sizeof(s[0]);
quickSort(s, 0, n-1);
printArray(s, n);
return 0;
}
CiNpbmNsdWRlPHN0ZGlvLmg+Cgp2b2lkIHN3YXAoaW50ICphLCBpbnQgKmIpewovLwkrK3N3YXBzOwoJKmEgPSAqYV4qYjsKCSpiID0gKmEgXiAqYjsKCSphID0gKmEgXiAqYjsKfQoKaW50IHBhcnRpdGlvbiAoaW50IGFycltdLCBpbnQgbG93LCBpbnQgaGlnaCkKewogICAgaW50IHBpdm90ID0gYXJyW2hpZ2hdOyAgICAvLyBwaXZvdAogICAgaW50IGkgPSAobG93IC0gMSk7ICAvLyBJbmRleCBvZiBzbWFsbGVyIGVsZW1lbnQKIAogICAgZm9yIChpbnQgaiA9IGxvdzsgaiA8PSBoaWdoLSAxOyBqKyspCiAgICB7CiAgICAgICAgLy8gSWYgY3VycmVudCBlbGVtZW50IGlzIHNtYWxsZXIgdGhhbiBvcgogICAgICAgIC8vIGVxdWFsIHRvIHBpdm90CiAgICAgICAgaWYgKGFycltqXSA8PSBwaXZvdCkKICAgICAgICB7CiAgICAgICAgICAgIGkrKzsgICAgLy8gaW5jcmVtZW50IGluZGV4IG9mIHNtYWxsZXIgZWxlbWVudAogICAgICAgICAgICBzd2FwKCZhcnJbaV0sICZhcnJbal0pOwogICAgICAgIH0KICAgIH0KICAgIHN3YXAoJmFycltpICsgMV0sICZhcnJbaGlnaF0pOwogICAgcmV0dXJuIChpICsgMSk7Cn0KIAoKdm9pZCBxdWlja1NvcnQoaW50IGFycltdLCBpbnQgbG93LCBpbnQgaGlnaCkKewogICAgaWYgKGxvdyA8IGhpZ2gpCiAgICB7CiAgICAgICAKICAgICAgICBpbnQgcGluID0gcGFydGl0aW9uKGFyciwgbG93LCBoaWdoKTsKIAogICAgICAgIHF1aWNrU29ydChhcnIsIGxvdywgcGluIC0gMSk7CiAgICAgICAgcXVpY2tTb3J0KGFyciwgcGluICsgMSwgaGlnaCk7CiAgICB9Cn0KIAovKiBGdW5jdGlvbiB0byBwcmludCBhbiBhcnJheSAqLwp2b2lkIHByaW50QXJyYXkoaW50IHNbXSwgaW50IHNpemUpCnsKICAgIGludCBpOwogICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspCiAgICAgICAgcHJpbnRmKCIlZCAiLCBzW2ldKTsKICAgIHByaW50ZigiXG4iKTsKfQogCgppbnQgbWFpbigpCnsKICAgIGludCBzW10gPSB7MSwyLDMsNCw1fTsKICAgIGludCBuID0gc2l6ZW9mKHMpL3NpemVvZihzWzBdKTsKICAgIHF1aWNrU29ydChzLCAwLCBuLTEpOwogICAgcHJpbnRmKCJTb3J0ZWQgYXJyYXk6IFxuIik7CiAgICBwcmludEFycmF5KHMsIG4pOwogICAgcmV0dXJuIDA7Cn0=