#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; }