How to spend the terminal

技術ブログでさえない

C言語における選択ソート

昨日某先輩から「入力された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も勉強したほうがいいだろうか。