■ 最大値選択法(平成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;
}