#include #include #include #include #define N 23 /* ソートするものの個数 */ #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(void); void sort(void); int a[N]; main() { int i; srand((unsigned)time(NULL)); /* 現在時刻で乱数の種を初期化 */ for (i=0; i 0; gap /= 3) { for (k = gap; k < N; k++) { for (l = k-gap; l >= 0; l -= gap) { /* 以下で a[k] を挿入 */ if (a[l] > a[l+gap]) { swap(l, l+gap); print(); /* swap() を呼ぶごとに印字 */ } else { break; } } } } }