#include<iostream>
using namespace std;
int partition(int a[], int si, int ei){
int x = a[si], count = 0;
for(int i = si + 1; i <= ei; i++){
if(a[i] <= x)
count++;
}
int pivot = si + count;
int temp = a[si];
a[si] = a[pivot];
a[pivot] = temp;
for(int i = si, j = ei; i <= pivot && j >= pivot;){
if(a[i] <= x)
i++;
else if(a[j] > x)
j--;
else{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
return pivot;
}
void quick_sort(int a[], int si, int ei){
if(si >= ei)
return;
int c = partition(a, si, ei);
quick_sort(a, si, c - 1);
quick_sort(a, c + 1, ei);
}
int main(){
int n,i,k,m;
clock_t time_req;
time_req=clock();
cout << "enter size of the array" << endl;
cin >> n;
int a[n];
cout<< "enter elements" << endl;
for(k = 0; k < n; k++) cin >> a[k];
quick_sort(a, 0, n-1);
cout<< "the sorted array is" <<endl;
for(m=0;m<n;m++)
cout<<a[m]<<" ";
cout<<endl;
time_req=clock()-time_req;
cout<<"the time taken is"<<endl;
cout<<(float)time_req/CLOCKS_PER_SEC<<"seconds"<<endl;
cout<<"The bytes occupied is"<<endl;
cout<<(sizeof(a[n])*n)+sizeof(n)+sizeof(i)+sizeof(k)+sizeof(m);
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgcGFydGl0aW9uKGludCBhW10sIGludCBzaSwgaW50IGVpKXsKCWludCB4ID0gYVtzaV0sIGNvdW50ID0gMDsKCQoJZm9yKGludCBpID0gc2kgKyAxOyBpIDw9IGVpOyBpKyspewoJCWlmKGFbaV0gPD0geCkKCQkJY291bnQrKzsKCX0KCQoJaW50IHBpdm90ID0gc2kgKyBjb3VudDsKCWludCB0ZW1wID0gYVtzaV07CglhW3NpXSA9IGFbcGl2b3RdOwoJYVtwaXZvdF0gPSB0ZW1wOwoJCglmb3IoaW50IGkgPSBzaSwgaiA9IGVpOyBpIDw9IHBpdm90ICYmIGogPj0gcGl2b3Q7KXsKCQlpZihhW2ldIDw9IHgpCgkJCWkrKzsKCQllbHNlIGlmKGFbal0gPiB4KQoJCQlqLS07CgkJZWxzZXsKCQkJaW50IHRlbXAgPSBhW2ldOwoJCQlhW2ldID0gYVtqXTsKCQkJYVtqXSA9IHRlbXA7CgkJCWkrKzsKCQkJai0tOwoJCX0KCX0KCQoJcmV0dXJuIHBpdm90Owp9Cgp2b2lkIHF1aWNrX3NvcnQoaW50IGFbXSwgaW50IHNpLCBpbnQgZWkpewoJaWYoc2kgPj0gZWkpCgkJcmV0dXJuOwoJCglpbnQgYyA9IHBhcnRpdGlvbihhLCBzaSwgZWkpOwoJCglxdWlja19zb3J0KGEsIHNpLCBjIC0gMSk7CglxdWlja19zb3J0KGEsIGMgKyAxLCBlaSk7Cn0KCmludCBtYWluKCl7IAoJaW50IG4saSxrLG07CgljbG9ja190IHRpbWVfcmVxOwoJdGltZV9yZXE9Y2xvY2soKTsKCWNvdXQgPDwgImVudGVyIHNpemUgb2YgdGhlIGFycmF5IiA8PCBlbmRsOwoJY2luID4+IG47CiAgICBpbnQgYVtuXTsKCWNvdXQ8PCAiZW50ZXIgZWxlbWVudHMiIDw8IGVuZGw7Cglmb3IoayA9IDA7IGsgPCBuOyBrKyspIGNpbiA+PiBhW2tdOwogCglxdWlja19zb3J0KGEsIDAsIG4tMSk7Cgljb3V0PDwgInRoZSBzb3J0ZWQgYXJyYXkgaXMiIDw8ZW5kbDsKICAgCiAgIGZvcihtPTA7bTxuO20rKykKCQljb3V0PDxhW21dPDwiICI7CiAgIGNvdXQ8PGVuZGw7CiAgIAogICB0aW1lX3JlcT1jbG9jaygpLXRpbWVfcmVxOwogICBjb3V0PDwidGhlIHRpbWUgdGFrZW4gaXMiPDxlbmRsOwogICBjb3V0PDwoZmxvYXQpdGltZV9yZXEvQ0xPQ0tTX1BFUl9TRUM8PCJzZWNvbmRzIjw8ZW5kbDsKICAgCiAgIGNvdXQ8PCJUaGUgYnl0ZXMgb2NjdXBpZWQgaXMiPDxlbmRsOwogICBjb3V0PDwoc2l6ZW9mKGFbbl0pKm4pK3NpemVvZihuKStzaXplb2YoaSkrc2l6ZW9mKGspK3NpemVvZihtKTsKfQ==