選択ソート


N個のデータが,配列 a[0]〜 a[N-1]に格納されているとする.

選択ソート

  1. a[0]〜a[N-1]の内,最小のものをa[0]と交換する
  2. a[1]〜a[N-1]の内,最小のものをa[1]と交換する
  3. a[2]〜a[N-1]の内,最小のものをa[2]と交換する
  4. ...
  5. a[N-2]〜a[N-1]の内,最小のものをa[N-2]と交換する

      for(k=0; k<N-2; k++) {
          a[k]〜a[N-1]の内,最小のものを探し,a[k]と交換する
      }

a[k]〜a[N-1]の内,最小のものを探す

  1. 取り敢えず,a[k]を最小値と仮定する
  2. a[k+1]と比較し,小さければ最小値を置き換える
  3. a[k+2]と比較し,小さければ最小値を置き換える
  4. a[k+3]と比較し,小さければ最小値を置き換える
  5. ...
  6. a[N-1]と比較し,小さければ最小値を置き換える

詳細化:

      t ← k;
      for(m=k+1; m<N; m++) {
          if(a[m] < a[t])  t ← m;
      }