#include void printia(int array[], int len); void qsort(int array[], int left, int right); void swap(int array[], int i, int j); int main(void) { /* 0 1 2 3 4 5 6 7 8 9*/ int array[10] = {9, 6, 1, 5, 3, 7, 0, 4, 2, 8}; printf("c> 0 1 2 3 4 5 6 7 8 9\n"); printia(array, sizeof(array)/sizeof(int)); qsort(array, 0, sizeof(array)/sizeof(int)-1); printia(array, sizeof(array)/sizeof(int)); return 0; } void printia(int array[], int len) { int i; printf("a> "); for (i = 0; i < len; i++) printf("%d ", array[i]); printf("\n"); } void qsort(int array[], int left, int right) { int i, last; if (left >= right) return; printf("1> array[%d] <=> array[%d] | %d <=> %d\n", left, (left+right)/2, array[left], array[(left+right)/2]); swap(array, left, (left+right)/2); printia(array, 10); last = left; for (i = left+1; i <= right; i++) if (array[i] < array[left]) { printf("2> array[%d] <=> array[%d] | %d <=> %d\n", last+1, i, array[last+1], array[i]); swap (array, ++last, i); printia(array, 10); } printf("s> |----------+-------|\n"); printf("3> array[%d] <=> array[%d] | %d <=> %d\n", left, last, array[left], array[last]); swap(array, left, last); printia(array, 10); qsort (array, left, last-1); qsort(array, last+1, right); printf("s> |----------------+-------|\n"); } void swap(int array[], int i, int j) { int temp; if (i == j) printf("s> |----------+-------|\n"); temp = array[i]; array[i] = array[j]; array[j] = temp; }