#include <stdio.h>
void exch(int& a, int &b)
{
int tmp = a;
a = b;
b = tmp;
}
int partition(int a[], int l, int r)
{
int i=l-1;
int j=r;
int val = a[r];
while(1)
{
while(val > a[++i]);
while(val < a[--j])
if(j == l) break;
if(i >= j) break;
exch(a[i], a[j]);
}
exch(a[i], a[r]);
return i;
}
void quicksort(int a[], int l, int r)
{
if(r<=l) return;
int i = partition(a, l, r);
quicksort(a, l, i-1);
quicksort(a, i+1, r);
}
int main()
{
int a[10] = {4,3,6,5,3,1,8,9,6,5};
quicksort(a, 0, 9);
for(int i=0; i<10; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}