昨日某先輩から「入力された10個以内の数字を小さい順に並び替える」という問題が出題されたので解いてみた。
#include <stdio.h> int main(void) { int array[10]; // 配列 int t; // 格納変数 int min,min_pos; // 一時変数 int k1,k2,k3; // 反復変数 int f; // 条件変数 k1 = 0; // 反復変数の初期化 while( 1 ) { // -1が出るまで入力 scanf("%d",&t); if( t == -1 ) break; array[k1] = t; k1++; } for( k2=0; k2<k1; k2++ ){ min = array[k2]; // 最小値の初期化 f = 0; // 条件の初期化 for( k3=k2; k3<k1; k3++ ){ if( min > array[k3] ) { min = array[k3]; min_pos = k3; f = 1; } } if( f ){ // 後ろの配列に最小値が存在する場合前に持ってくる t = array[k2]; array[k2] = min; array[min_pos] = t; } } for( k2=0; k2<k1; k2++ ){ // 列挙 printf("%d ",array[k2]); } return 0; }
先輩からバブルソートという単語を聞いたが知らないので適当に組んでみた。
これは選択ソートと呼ばれるソートでバブルソートより早く挿入ソートより遅いソートらしい。
とりあえず時間があればバブルソートや挿入ソートで組み直してみたいと思う。
P.S. コードを表示するためはてな記法モードで書いたがHTMLがよくわからないので書きづらい。
HTMLも勉強したほうがいいだろうか。