#include<stdio.h> #include<string.h> #define DEBUG ({for(k = l ; k <= r; k++) printf("%d ", s[k]);printf(" ");}) void quickSort(int s[], int l, int r) { int i, j, x; int k; DEBUG; if (l < r) { i = l; j = r; x = s[i]; while (i < j) { while(i < j && s[j] > x) j--; /* 从右向左找第一个小于x的数 */ if(i < j) { printf("%d <--- %d ", s[i], s[j]); s[i++] = s[j]; } while(i < j && s[i] < x) i++; /* 从左向右找第一个大于x的数 */ if(i < j) { printf("%d ---> %d ", s[i], s[j]); s[j--] = s[i]; } } printf("s[%d]%d <--- %d ",i, s[i], x); s[i] = x; DEBUG;printf(" "); quickSort(s, l, i - 1); quickSort(s, i + 1, r); } } int main(void ) { int i; int aa[] = {4,1,5,2,6,3,9,8,7,0}; quickSort(aa, 0, 9); return 0; }
程序执行结果如下: