挿入ソートをC言語で書いた
挿入ソートのコードを書きました。
このアルゴリズムはn個の数字が入った配列がある時、0からnまでループを回し、自分より右の数のうち最小のものと自分を入れ替えるアルゴリズムです。
アルゴリズムの説明は別のサイトを見てもらった方が分かりやすいと思います。。。
#include <stdio.h> #define NUMBER_OF_ITEMS 10 int *selection_sort (int messy_array[NUMBER_OF_ITEMS]) { int *sorted_array = messy_array; for (int i = 0; i< NUMBER_OF_ITEMS - 1; i++) { int minimum_index = i; for (int j = i + 1; j < NUMBER_OF_ITEMS; j++) { if (sorted_array[j] < sorted_array[minimum_index]) { minimum_index = j; } } // swap int temp = sorted_array[i]; sorted_array[i] = sorted_array[minimum_index]; sorted_array[minimum_index] = temp; } return sorted_array; } int main (void) { int messy_array[NUMBER_OF_ITEMS] = { 1, 10, 3, 32, 16, 19, 22, 9, 12, 17}; int *sorted_array = selection_sort(messy_array); for (int i = 0; i < NUMBER_OF_ITEMS; i++) { printf("%d ", sorted_array[i]); } return 0; }
地味にC11の機能を使ったので-std=c11
オプションをつけてコンパイルします。
$ gcc -std=c11 -o selection selection.c $ ./selection 1 3 9 10 12 16 17 19 22 32