//Quick Sort
#include<bits/stdc++.h>
using namespace std;
//element swapping
void swap(int &a, int &b){
int temp=a; a=b; b=temp;
}
//Partition
int partition(int arr[], int low, int high){
int pivot = arr[high]; //last er ta pivot
int i = low-1; //choto upadan er tracker
for (int j=low; j<high; j++){
//pivot er choto
if (arr[j]<pivot){
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i+1], arr[high]);
return i+1; //pivot er index
}
void quickSort(int arr[], int low, int high){
if(low < high){
int pIdx = partition(arr, low, high);
quickSort(arr, low, pIdx-1);
quickSort(arr, pIdx+1, high);
}
}
int main(){
int arr[]={10, 80, 30, 90, 40, 50, 70};
int n=7;
quickSort(arr, 0, n-1);
cout << "Quick sorted array: ";
for (int i = 0; i<n; i++){
cout<<arr[i]<<" ";
}
cout << endl;
return 0;
}
Ly9RdWljayBTb3J0CiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovL2VsZW1lbnQgc3dhcHBpbmcKdm9pZCBzd2FwKGludCAmYSwgaW50ICZiKXsKICAgIGludCB0ZW1wPWE7IGE9YjsgYj10ZW1wOwp9CgovL1BhcnRpdGlvbgppbnQgcGFydGl0aW9uKGludCBhcnJbXSwgaW50IGxvdywgaW50IGhpZ2gpewogICAgaW50IHBpdm90ID0gYXJyW2hpZ2hdOyAvL2xhc3QgZXIgdGEgcGl2b3QKICAgIGludCBpID0gbG93LTE7IC8vY2hvdG8gdXBhZGFuIGVyIHRyYWNrZXIKCiAgICBmb3IgKGludCBqPWxvdzsgajxoaWdoOyBqKyspewogICAgICAgIC8vcGl2b3QgZXIgY2hvdG8KICAgICAgICBpZiAoYXJyW2pdPHBpdm90KXsKICAgICAgICAgICAgaSsrOwogICAgICAgICAgICBzd2FwKGFycltpXSwgYXJyW2pdKTsKICAgICAgICB9CiAgICB9CgogICAgc3dhcChhcnJbaSsxXSwgYXJyW2hpZ2hdKTsKICAgIHJldHVybiBpKzE7IC8vcGl2b3QgZXIgaW5kZXgKfQoKdm9pZCBxdWlja1NvcnQoaW50IGFycltdLCBpbnQgbG93LCBpbnQgaGlnaCl7CiAgICBpZihsb3cgPCBoaWdoKXsKICAgICAgICBpbnQgcElkeCA9IHBhcnRpdGlvbihhcnIsIGxvdywgaGlnaCk7CgogICAgICAgIHF1aWNrU29ydChhcnIsIGxvdywgcElkeC0xKTsKICAgICAgICBxdWlja1NvcnQoYXJyLCBwSWR4KzEsIGhpZ2gpOwogICAgfQp9CgoKaW50IG1haW4oKXsKICAgIGludCBhcnJbXT17MTAsIDgwLCAzMCwgOTAsIDQwLCA1MCwgNzB9OwogICAgaW50IG49NzsKCiAgICBxdWlja1NvcnQoYXJyLCAwLCBuLTEpOwoKICAgIGNvdXQgPDwgIlF1aWNrIHNvcnRlZCBhcnJheTogIjsKCiAgICBmb3IgKGludCBpID0gMDsgaTxuOyBpKyspewogICAgICAgIGNvdXQ8PGFycltpXTw8IiAiOwogICAgfQoKICAgIGNvdXQgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==