// Online C compiler to run C program online
#include <stdio.h>
//{ Driver Code Starts
//Initial Template for C
// C program for implementation of Bubble sort
#include <stdio.h>
void printArray(int arr[], int size);
void swap(int *xp, int *yp)
{
int temp = *xp;
*xp = *yp;
*yp = temp;
}
// } Driver Code Ends
//User function Template for C
void quickSort2(int arr[], int low, int high)
{
static int idx = 0;
int i = low;
int j = high;
int pivot = arr[low + (high-low)/2];
// int idx = low + (high-low)/2;
while(i < j)
{
while(arr[i] < pivot)
i++;
while(arr[j] > pivot)
j--;
if (i<=j)
{
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
// printArray(arr, 6);
if(low < high)
{
// printf(" %d, %d\n", i, j);
printf("[quickSort loop %d] TARGET = %d, LEFT = %d, RIGHT = %d\n", idx++, pivot, i, j);
quickSort2(arr, low, j);
quickSort2(arr, i, high);
}
}
//{ Driver Code Starts.
/* Function to print an array */
void printArray(int arr[], int size)
{
int i;
for (i=0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
// Driver program to test above functions
int main()
{
// int arr[] = {999,3,7,13,11,10,9,5,888,333,555,90,32,65,777,1,3};
int arr[] = {0,3,9,5,1, -1};
// int arr[] = {0,10, 11,9,5,1, -1};
int n = sizeof(arr)/sizeof(int);
printf("size of arrary is %d \n", n);
printArray(arr, n);
// bubbleSort(arr, n);
// selectionSort(arr, n);
// insertionSort(arr, n);
quickSort2(arr, 0, n-1);
printArray(arr, n);
return 0;;
}
// } Driver Code Ends
Ly8gT25saW5lIEMgY29tcGlsZXIgdG8gcnVuIEMgcHJvZ3JhbSBvbmxpbmUKI2luY2x1ZGUgPHN0ZGlvLmg+CgovL3sgRHJpdmVyIENvZGUgU3RhcnRzCi8vSW5pdGlhbCBUZW1wbGF0ZSBmb3IgQwoKLy8gQyBwcm9ncmFtIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBCdWJibGUgc29ydAoKI2luY2x1ZGUgPHN0ZGlvLmg+CnZvaWQgcHJpbnRBcnJheShpbnQgYXJyW10sIGludCBzaXplKTsKIAp2b2lkIHN3YXAoaW50ICp4cCwgaW50ICp5cCkKewogICAgaW50IHRlbXAgPSAqeHA7CiAgICAqeHAgPSAqeXA7CiAgICAqeXAgPSB0ZW1wOwp9CgoKLy8gfSBEcml2ZXIgQ29kZSBFbmRzCi8vVXNlciBmdW5jdGlvbiBUZW1wbGF0ZSBmb3IgQwoKCnZvaWQgcXVpY2tTb3J0MihpbnQgYXJyW10sIGludCBsb3csIGludCBoaWdoKQp7CiAgICBzdGF0aWMgaW50IGlkeCA9IDA7CiAgICBpbnQgaSA9IGxvdzsKICAgIGludCBqID0gaGlnaDsKICAgIGludCBwaXZvdCA9IGFycltsb3cgKyAoaGlnaC1sb3cpLzJdOwogICAgLy8gaW50IGlkeCA9IGxvdyArIChoaWdoLWxvdykvMjsKCiAgICB3aGlsZShpIDwgaikKICAgIHsKICAgICAgICB3aGlsZShhcnJbaV0gPCBwaXZvdCkKICAgICAgICBpKys7CgogICAgICAgIHdoaWxlKGFycltqXSA+IHBpdm90KQogICAgICAgIGotLTsKCiAgICAgICAgaWYgKGk8PWopCiAgICAgICAgewogICAgICAgIGludCB0bXAgPSBhcnJbaV07CiAgICAgICAgYXJyW2ldID0gYXJyW2pdOwogICAgICAgIGFycltqXSA9IHRtcDsKICAgICAgICBpKys7CiAgICAgICAgai0tOwogICAgICAgIH0KCiAgICB9CiAgICAvLyBwcmludEFycmF5KGFyciwgNik7CgogICAgaWYobG93IDwgaGlnaCkKICAgIHsgICAgICAgIAogICAgICAgIC8vIHByaW50ZigiICVkLCAlZFxuIiwgaSwgaik7CiAgICAgICAgcHJpbnRmKCJbcXVpY2tTb3J0IGxvb3AgJWRdIFRBUkdFVCA9ICVkLCBMRUZUID0gJWQsIFJJR0hUID0gJWRcbiIsIGlkeCsrLCBwaXZvdCwgaSwgaik7CiAgICAgICAgcXVpY2tTb3J0MihhcnIsIGxvdywgaik7CiAgICAgICAgcXVpY2tTb3J0MihhcnIsIGksIGhpZ2gpOwogICAgfQp9CgoKCgoKCgoKLy97IERyaXZlciBDb2RlIFN0YXJ0cy4KIAovKiBGdW5jdGlvbiB0byBwcmludCBhbiBhcnJheSAqLwp2b2lkIHByaW50QXJyYXkoaW50IGFycltdLCBpbnQgc2l6ZSkKewogICAgaW50IGk7CiAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykKICAgICAgICBwcmludGYoIiVkICIsIGFycltpXSk7CiAgICBwcmludGYoIlxuIik7Cn0KIAogCi8vIERyaXZlciBwcm9ncmFtIHRvIHRlc3QgYWJvdmUgZnVuY3Rpb25zCmludCBtYWluKCkKeyAgICAKICAgIC8vIGludCBhcnJbXSA9IHs5OTksMyw3LDEzLDExLDEwLDksNSw4ODgsMzMzLDU1NSw5MCwzMiw2NSw3NzcsMSwzfTsKICAgIGludCBhcnJbXSA9IHswLDMsOSw1LDEsIC0xfTsKICAgIC8vIGludCBhcnJbXSA9IHswLDEwLCAxMSw5LDUsMSwgLTF9OwogICAgaW50IG4gPSBzaXplb2YoYXJyKS9zaXplb2YoaW50KTsKICAgIHByaW50Zigic2l6ZSBvZiBhcnJhcnkgaXMgJWQgXG4iLCBuKTsKICAgIHByaW50QXJyYXkoYXJyLCBuKTsKCiAgICAvLyBidWJibGVTb3J0KGFyciwgbik7CiAgICAvLyBzZWxlY3Rpb25Tb3J0KGFyciwgbik7CiAgICAvLyBpbnNlcnRpb25Tb3J0KGFyciwgbik7CiAgICBxdWlja1NvcnQyKGFyciwgMCwgbi0xKTsKICAgIHByaW50QXJyYXkoYXJyLCBuKTsKICAgIHJldHVybiAwOzsKfQovLyB9IERyaXZlciBDb2RlIEVuZHMKCgoK