int swap(int *pa, int *pb) { int t = *pa; *pa = *pb; *pb = t; return 0; } int partition(int a[], int s, int e) { int i = s - 1, j; for (j = s; j < e; ++j) { if (a[j] >= a[e]) { ++i; swap(a+i, a+j); } } ++i; swap(a+i, a+e); return i; } int qsort(int a[], int s, int e) { if (s < e) { int p = partition(a, s, e); qsort(a, s, p - 1); qsort(a, p + 1, e); } return 0; } int main() { int a[] = {3, 2, 4, 6, 0, 7, 5, 3}; qsort(a, 0, 7); int i; for (i = 0; i < 7; ++i) printf("%d\n", a[i]); return 0; }