C言語で書いてみました

過去の情報処理技術者試験の出題をもとにして、Cのソースを起こしてみました。

■ 最大値選択法(平成11年午前問5)

#include <stdio.h>

/* 配列の内容を表示 */
void print_array(int *array, int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", *(array+i));
    putchar('\n');
}

/* 最大値選択法 */
void selection_sort(int *array, int size)
{
    int i, j, k, w;
    for (i = 0; i < size - 1; i++) {
        k = i;
        for (j = i; j < size; j++) {
            if (*(array+j) > *(array+k))
                k = j;
        }
        w = *(array+k);
        *(array+k) = *(array+i);
        *(array+i) = w;
    }
}

/* メイン ルーチン */
int main()
{
    int x[] = { 1, 3, 12, 15, 18, 20, 21, 4, 5, 6, 7, 9, 11, 25 };
    int n = sizeof(x) / sizeof(x[0]);

    print_array(x, n);
    selection_sort(x, n);
    print_array(x, n);

    return 0;
}