Quick sort is look like bubble sort, but it is quicker with divide and conquer.
Complexity: nlog(n)
Steady: NO
#include<bits/stdc++.h>
using namespace std;
int L[] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
void QuickSort(int left,int right){
int l = left;
int r = right;
if(left>=right){
return ;
}
int pivot = L[left];
while(left<right){
while(left<right&&L[right]>=pivot){
//it must be L[right]>=pivot not '>',
//or it will infinite loop like L[] = {3,3}
right--;
}
L[left] = L[right];
while(left<right&&L[left]<=pivot){ //as before
left++;
}
L[right] = L[left];
}
L[left] = pivot;
QuickSort(l,left);
QuickSort(right+1,r);
return ;
}
int main(){
int n = sizeof(L)/sizeof(int);
int left = 0;
int right = n-1;
QuickSort(left,right);
for(int i=0;i<n;i++){
cout<<L[i]<<' ';
}
cout<<endl;
}