18日目 まだソートに入ったばっかり
「C言語による実用アルゴリズム入門」のソースにちょっと手を加えてみた。
ソート時間の計測を試みたが、なんか変なことをしている気がする。
/*2008/03/28 12:39:19*/ #include <stdio.h> #include <time.h> #include "sortfunc.h" #define N 6 int main(void) { int i; int d[N] = {60, 40, 30, 10, 20, 50}; char c; clock_t t; printf("60, 40, 30, 10, 20, 50\n"); printf("ソート法を選択してください\n\n"); printf("a: 単純ソート\n"); printf("b: 選択ソート\n"); scanf("%c", &c); t = clock(); switch (c){ case 'a': printf("単純ソートが選択されました\n"); ba_sort(d, 0, N-1); break; case 'b': printf("選択ソートが選択されました\n"); sel_sort2(d, 0, N-1); break; default: printf("ソート法を選択してください\n"); break; } ba_sort(d, 0, N-1); for (i=0; i<N; i++){ printf("\t%d\n", d[i]); } printf("\n"); printf("%.3f秒\n",(clock()-t)/(double)CLOCKS_PER_SEC); return 0; }
/* sortfunc.h */ void ba_sort(int d[], int top, int end) { int i,j,wk; for (i=top; i<end; i++){ for (j=i+1; j<=end; j++){ if (d[i] > d[j]){ wk = d[i]; d[i] = d[j]; d[j] = wk; } } } } void sel_sort2(int d[], int top, int end) { int i, j, tmp; int pos; for (i=top; i<end; i++) { pos = i; tmp = d[pos]; for (j=i+1; j<end; j++){ if (tmp > d[j]){ pos = j; tmp = d[pos]; } } d[pos] = d[i]; d[i] = tmp; } }