#include <stdio.h>
int findp( int arrstart, int arrend) {
return (arrstart + arrend) / 2;
}
int part(int arr[], int arrstart, int arrend) {
int p = findp( arrstart, arrend);
int temp = arr[arrstart];
arr[arrstart] = arr[p];
arr[p] = temp;
int pre = arr[arrstart];
while (arrstart < arrend) {
while (arrstart<arrend&&arr[arrend]>pre)
arrend--;
arr[arrstart] = arr[arrend];
while (arrstart < arrend&&arr[arrstart] < pre)
arrstart++;
arr[arrend] = arr[arrstart];
}
arr[arrstart] = pre;
return arrstart;
}
void quicksort(int arr[], int arrstart, int arrend) {
if (arrstart < arrend) {
int piv = part(arr, arrstart, arrend);
quicksort(arr, arrstart, piv - 1);
quicksort(arr, piv + 1, arrend);
}
}
void printarr(int arr[],int len){
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
}
int main() {
int arr1[] = { 4,9,6,21,69,99,63 };
int len1 =sizeof(arr1)/sizeof(int);
quicksort(arr1, 0, len1);
printarr(arr1,len1);
return 0;
}