#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 (j = 0; j < gap; j++) { for (m = 1; j+m*gap < N; m++) { for (i = m-1; i >= 0; i--) { /* 以下で a[j+m*gap] を挿入 */ if (a[j+i*gap] > a[j+(i+1)*gap]) { swap(j+i*gap, j+(i+1)*gap); print(); /* swap() を呼ぶごとに印字 */ } else { break; } } } } } }