/* 2進数の基数ソートのプログラム例 */ #include #include #define N 100 /* 配列Aの最大サイズ */ #define K 5 /* 語長 */ struct word /* 構造体wordの定義 */ { int letter[K]; }; /* 関数の宣言 */ void biradixsort(struct word *A, int *iA, int n); main() /* 2進数の基数ソートのテストプログラム */ { struct word A[N]; /* K桁の2進数wordの配列 */ int iA[N]; /* 配列Aのインデックス */ int i, h, n; FILE *file; file=fopen("bidata", "r"); /* データの読込み */ fscanf(file, "%d", &n); if(n>N) { printf("Illegal size n = %d for N = %d\n", n, N); exit(1); } printf("n = %d, K = %d\nA = \n", n, K); for(i=0; i=0; k--) { count=0; /* k桁目の値が0である要素数を数える */ for(i=0; i