#include <iostream>
#include <time.h>
using namespace std;
void printarray(int qarray[], int l, int r){
for(int i=0; i<l; ++i)
std::cout << qarray[i] << ' ';
std::cout << '[';
for(int i=l; i<=r; ++i)
std::cout << qarray[i] << ' ';
std::cout << ']';
for(int i=r+1; i<26; ++i)
std::cout << qarray[i] << ' ';
std::cout << std::endl;
}
void quickSort(int qarray[], int l, int r){
int i = l, j = r;
int temp;
int pivot = qarray[(l+r)/2];
printarray(qarray, l, r);
//partitioning
while(i<=j){
while(qarray[i]< pivot)
i++;
while(qarray[j] > pivot)
j--;
if(i<=j){
temp = qarray[i];
qarray[i] = qarray[j];
qarray[j] = temp;
i++;
j--;
}
}
//Recursion of the quicksort algorithm
printarray(qarray, l, r);
if(l < j)
quickSort(qarray,l,j);
printarray(qarray, l, r);
if(i < r)
quickSort(qarray,i,r);
}
int main(){
int myArray[26] ={4,2,5,6,1,3,17,14,67,45,32,66,88,
78,69,92,93,21,25,23,71,61,59,60,30,79};
std::cout << "Unsorted: ";
printarray(myArray, 0, 25);
clock_t tStart = clock();
quickSort(myArray,0,25);
double seconds = clock() / double(CLOCKS_PER_SEC);
std::cout << "Sorted: ";
printarray(myArray, 0, 25);
cout << "This program has been running for " << seconds << " seconds." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGltZS5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBwcmludGFycmF5KGludCBxYXJyYXlbXSwgaW50IGwsIGludCByKXsKICAgIGZvcihpbnQgaT0wOyBpPGw7ICsraSkKICAgICAgICBzdGQ6OmNvdXQgPDwgcWFycmF5W2ldIDw8ICcgJzsKICAgIHN0ZDo6Y291dCA8PCAnWyc7CiAgICBmb3IoaW50IGk9bDsgaTw9cjsgKytpKQogICAgICAgIHN0ZDo6Y291dCA8PCBxYXJyYXlbaV0gPDwgJyAnOwogICAgc3RkOjpjb3V0IDw8ICddJzsKICAgIGZvcihpbnQgaT1yKzE7IGk8MjY7ICsraSkKICAgICAgICBzdGQ6OmNvdXQgPDwgcWFycmF5W2ldIDw8ICcgJzsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0KCnZvaWQgcXVpY2tTb3J0KGludCBxYXJyYXlbXSwgaW50IGwsIGludCByKXsKCiAgICBpbnQgaSA9IGwsIGogPSByOwogICAgaW50IHRlbXA7CiAgICBpbnQgcGl2b3QgPSBxYXJyYXlbKGwrcikvMl07CiAKICAgIHByaW50YXJyYXkocWFycmF5LCBsLCByKTsKCiAgICAvL3BhcnRpdGlvbmluZwogICAgd2hpbGUoaTw9ail7CiAgICAgICAgd2hpbGUocWFycmF5W2ldPCBwaXZvdCkKICAgICAgICAgICAgaSsrOwogICAgICAgIHdoaWxlKHFhcnJheVtqXSA+IHBpdm90KQogICAgICAgICAgICBqLS07CiAgICAgICAgaWYoaTw9ail7CgogICAgICAgICAgICB0ZW1wID0gcWFycmF5W2ldOwogICAgICAgICAgICBxYXJyYXlbaV0gPSBxYXJyYXlbal07CiAgICAgICAgICAgIHFhcnJheVtqXSA9IHRlbXA7CiAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgai0tOwoKICAgICAgICB9CiAgICAgIH0KCiAgICAvL1JlY3Vyc2lvbiBvZiB0aGUgcXVpY2tzb3J0IGFsZ29yaXRobQogICAgcHJpbnRhcnJheShxYXJyYXksIGwsIHIpOwogICAgaWYobCA8IGopCiAgICAgICAgcXVpY2tTb3J0KHFhcnJheSxsLGopOwogICAgcHJpbnRhcnJheShxYXJyYXksIGwsIHIpOwogICAgaWYoaSA8IHIpCiAgICAgICAgcXVpY2tTb3J0KHFhcnJheSxpLHIpOwp9CgppbnQgbWFpbigpewogICAgaW50IG15QXJyYXlbMjZdID17NCwyLDUsNiwxLDMsMTcsMTQsNjcsNDUsMzIsNjYsODgsCiAgICAgICAgICAgICAgICAgICA3OCw2OSw5Miw5MywyMSwyNSwyMyw3MSw2MSw1OSw2MCwzMCw3OX07IAogICAgc3RkOjpjb3V0IDw8ICJVbnNvcnRlZDogIjsKICAgIHByaW50YXJyYXkobXlBcnJheSwgMCwgMjUpOwoKICAgIGNsb2NrX3QgdFN0YXJ0ID0gY2xvY2soKTsKICAgIHF1aWNrU29ydChteUFycmF5LDAsMjUpOwogICAgZG91YmxlIHNlY29uZHMgPSBjbG9jaygpIC8gZG91YmxlKENMT0NLU19QRVJfU0VDKTsKCiAgICBzdGQ6OmNvdXQgPDwgIlNvcnRlZDogIjsKICAgIHByaW50YXJyYXkobXlBcnJheSwgMCwgMjUpOwogICAgY291dCA8PCAiVGhpcyBwcm9ncmFtIGhhcyBiZWVuIHJ1bm5pbmcgZm9yICIgPDwgc2Vjb25kcyA8PCAiIHNlY29uZHMuIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9