#include #include #define MAX_SIZE 1000 void swap(int * p, int * q) { if (p != q) { int tmp = *p; *p = *q; *q = tmp; } } int * partition(int * begin, int * end) { assert(end - begin > 0); int pivot = *(end - 1); int * q = begin; for(int * p = begin; p != end; ++p) if (*p <= pivot) swap(p, q++); return q - 1; } void quicksort(int * begin, int * end) { if (end - begin > 1) { int * q = partition(begin, end); quicksort(begin, q); quicksort(q + 1, end); } } int main(int argc, const char * argv[]) { int A[MAX_SIZE]; int size; for(size = 0; size < MAX_SIZE; ++size) if (scanf("%d", A + size) < 1) break; quicksort(A, A + size); for(int * p = A; p != A + size; ++p) printf("%d ", *p); printf("\n"); }