#include #include #include #include #define DEBUG #define N 13 /* ソートするものの個数 */ #define MAX 99 /* 数値データは 0 ... MAX */ #define swap(I,J) { int tmp = a[(I)]; a[(I)] = a[(J)]; a[(J)] = tmp; } int myrand(int max); void print(int lo, int p, int hi); void sort(int lo, int hi); int a[N]; main() { int i; srand((unsigned)time(NULL)); /* 現在時刻で乱数の種を初期化 */ printf("%s %s\n", __DATE__, __TIME__); for (i=0; i= pivot */ while (i <= hi) { if (a[i] < pivot) { swap(p, i); /* p == i なら何もしないに等しい */ p++; /* swap(p++, i) は不可(マクロなので) */ } i++; } a[lo] = a[p-1]; a[p-1] = pivot; print(lo, p-1, hi); /* 確認のため印字 */ sort(lo, p-2), sort(p, hi); /* a[p-1] が pivot であることに注意 */ } }