#include <stdio.h>
int findPivotPos(int array[],int arrStart,int arrEnd){
return arrStart;
}
int partition(int array[],int arrStart,int arrEnd,int pivotPos){
int pivotValue=array[pivotPos];
array[pivotPos]=array[arrEnd-1];
int itPivotValueCount=0;
for (int i=arrStart, temp;i<arrEnd-1;i++){
if (array[i]<pivotValue){
temp=array[i];
array[i]=array[arrStart+itPivotValueCount];
array[arrStart+itPivotValueCount]=temp;
itPivotValueCount++;
}
}
array[arrEnd-1]=array[arrStart+itPivotValueCount];
array[arrStart+itPivotValueCount]=pivotValue;
return arrStart+itPivotValueCount;
}
void quickSort(int array[],int arrStart,int arrEnd){
if(arrEnd - arrStart < 2){
return;
}
int pivotPos = findPivotPos(array,arrStart,arrEnd);
int pivotOrderedPos = partition(array,arrStart,arrEnd,pivotPos);
quickSort(array,arrStart,pivotOrderedPos);
quickSort(array,pivotOrderedPos+1,arrEnd);
}
void display(int array[],int arrLen){
for (int i=0;i<arrLen;i++){
printf("%d ",array[i]);
}
}
int main () {
int array[]={10,8,3,9,5,1,2,7,6,4};
quickSort(array,0,sizeof(array)/sizeof(int));
display(array,sizeof(array)/sizeof(int));
return 0;
}