#include <iostream>
using namespace std;
void printArray(int array[], int arrLen) {
for (int i = 0; i < arrLen; ++i) {
cout << array[i] << " ";
}
cout << endl;
}
void printArray1(int array[], int arrStart, int arrEnd) {
for (int i = arrStart; i < arrEnd; ++i) {
cout << array[i] << " ";
}
cout << endl;
}
int findPivotPos(int array[],int arrStart,int arrEnd){
return arrStart;
}
int partition(int array[],int arrStart,int arrEnd,int pivotPos){
int pivotVaule=array[pivotPos];
array[pivotPos]=array[arrEnd-1];
int ItpivotVauleCount=0;
for(int i=arrStart;i<arrEnd-1;++i){
if(array[i]<pivotVaule){
int temp=array[arrStart+ItpivotVauleCount];
array[arrStart+ItpivotVauleCount]=array[i];
array[i]=temp;
++ItpivotVauleCount;
}
array[arrEnd-1]=array[arrStart+ItpivotVauleCount];
array[arrStart+ItpivotVauleCount]=pivotVaule;
return arrStart+ItpivotVauleCount;
}
}
bool quickSort(int array[],int arrStart,int arrEnd){
if(arrEnd-arrStart<2){
return 0;
}
int pivotPos=findPivotPos(array,arrStart,arrEnd);
int pivotOrderedPos=partition(array,arrStart,arrEnd,pivotPos);
quickSort(array,arrStart,pivotOrderedPos);
quickSort(array,pivotOrderedPos+1,arrEnd);
}
int main(){
int array0[] = {};
int arrayLen =0;
printArray(array0, arrayLen);
quickSort(array0, 0, arrayLen);
printArray(array0, arrayLen);
cout << "=========================================" << endl;
int array1[] = {1};
arrayLen = sizeof(array1)/sizeof(int);
printArray(array1, arrayLen);
quickSort(array1, 0, arrayLen);
printArray(array1, arrayLen);
cout << "=========================================" << endl;
int array2[] = {2, 1};
arrayLen = sizeof(array2)/sizeof(int);
printArray(array2, arrayLen);
quickSort(array2, 0, arrayLen);
printArray(array2, arrayLen);
cout << "=========================================" << endl;
int array3[] = {1, 5, 3};
arrayLen = sizeof(array3)/sizeof(int);
printArray(array3, arrayLen);
quickSort(array3, 0, arrayLen);
printArray(array3, arrayLen);
cout << "=========================================" << endl;
int array4[] = {9, 12, 8, 7};
arrayLen = sizeof(array4)/sizeof(int);
printArray(array4, arrayLen);
quickSort(array4, 0, arrayLen);
printArray(array4, arrayLen);
cout << "=========================================" << endl;
int array5[] = {11,8,3,9,7,1,2,5};
arrayLen = sizeof(array5)/sizeof(int);
printArray(array5, arrayLen);
quickSort(array5, 0, arrayLen);
printArray(array5, arrayLen);
}