#include "stdio.h" #include "stdlib.h" #include "time.h" #include "conio.h" #define frand() ((double)rand()/(RAND_MAX+1)) #define NUM 22 static int data[2][NUM]; void setData(){ for(int i=0;i= NUM) { j = moveArray(k1,k2, j, N0, NUM); break; } N2 = N1 + step; if (N2 > NUM) N2 =NUM; int i1 = N0; int i2 = N1; while (i1 < N1){// マージ処理 if (i2 >= N2) { j = moveArray(k1,k2, j, i1, N1); break; } if (data[k1][i1] > data[k1][i2]) data[k2][j++] = data[k1][i2++]; else data[k2][j++] = data[k1][i1++]; } j = moveArray(k1, k2, j, i2, N2);//後半部の残りを複写 } k2 = k1; k1 = 1 - k1;// 入力側と出力側を切り替え } return k1;//ソート結果が入っている添字を返す } void initRand(){ srand((int)time(NULL));rand(); } int main(){ int K;initRand(); do{ printf("\n\nソート前"); setData() ;printDT(0); printf("\n\nソート後"); K=impMergeSort();printDT(K); printf("\n\n終わる時は[ctrl]+'Z'\n"); } while(getch()!=0x1A); return 0; }