void printarr(int arr[], int num)
{
int i;
i = -1;
while(++i < num) {
printf("%2d ", arr[i]);
}
printf("\n");
}
int part(int arr[], int i, int j)
{
int key = arr[i];
while(i<j) {
while (j>i && arr[j] >key) --j;
if (j>i) arr[i]=arr[j];
while (j>i && arr[i] <= key) ++i;
if (j>i) arr[j]=arr[i];
}
arr[i]=key;
return key;
}
void qsort(int arr[], int i, int j)
{
if(i>=j) return;
int p = part(arr, i, j);
qsort(arr, i, p-1);
qsort(arr, p+1, j);
}
void main()
{
int num, arr[] = {2,5,4,1,0,3,8, 9,6,};
num=sizeof(arr)/sizeof(int);
printarr(arr, num);
qsort(arr, 0, num-1);
printarr(arr, num);
qsort(arr, 0, num-1);
printarr(arr, num);
}