見出し画像

【擬似言語⑫追ノ壱】選択ソート | アルゴのラスボス2(基本情報技術者, 科目B, アルゴリズム)

このNoteでは「選択ソート」を学びます。>バブルソートのNote に続いて2種類目のソート(並べ替え)アルゴリズムですね。

ソートアルゴは、擬似言語のラスボスです。私の専門学校でも1年生前期のラスボス。バブルソート/選択ソート/挿入ソートまでトレースできれば、FE合格は充分見えてきます。>挿入ソートのNote(作成中*)

テキストの基礎を生かして、プログラム的な考察/工夫を学んでいきます。基礎と実用にギャップを感じる方のために作りました。
>【FEB】擬似言語の教科書Note

ぜひ一緒に学習を進めていきましょう!


このNoteは、私がIT専門学校で授業したことを基に作成しています。IT専門学校でFEは第一目標として、カリキュラムが構築されています。何も知らずに入学しても、1年生10月にはFE合格していきますよ。実績ある教育ノウハウを詰め込んだので、少しでも信頼して頂けたら嬉しいです。

>全Noteへのリンク(FE節)
※科目Aのテーマ別/科目B/旧FE午後など沢山作りました!



手順 | 王者を順番に確定していく

選択ソートは、
「一番目に大きい値を探して座らせよう」
「二番目に大きい値を探して座らせよう」
を繰り返していく手順。大きい順(降順)にソートされます。

小さい順(昇順)にソートしたいなら、小さい値を探します。


一番目の席(王座)のデータを、暫定王者とし。残りの全データと比べて新王者がいるなら王座と入替えます。全データと比べたら、一番目の席は確定。二番目の席も同様に。

新王者になるべきデータがなければ、暫定王者が王座に確定します。

三番目の席の暫定王者「3」は、残りデータ「4」より小さいのでOK。そのままとなりました。




擬似言語 | 手順と行/ブロックを対応させる

最大値/最小値の探し方は、最初のデータを暫定チャンピオンにして、他データと比べていくのがコツでしたね。>【擬似言語⑤】最大値のNote

下記でも「minIndex ← i」で、先頭データarray[1]を最初のチャンピオン(暫定の最小値)にしています。

○ selectionSort(整数型の配列: array)
  整数型: i, j, minIndex, swap, length
  length ← arrayの要素数

  / 先頭から順に、最小値を入れて確定していく */
  for (i を 1 から length - 1 まで 1 ずつ増やす)
    minIndex ← i  / 暫定チャンピオン, 最小値を入れたい場所 */

    / 未整列の部分(i+1 から最後)の中から最小値を探す */
    for (j を i + 1 から length まで 1 ずつ増やす)
      if (array[j] < array[minIndex])
        minIndex ← j  / 最小値を持つ要素番号を更新 */
      endif
    endfor

    / 見つけた最小値と、未整列の先頭(i番目)を交換する */
    swap ← array[i]
    array[i] ← array[minIndex]
    array[minIndex] ← swap

  endfor

ループカウンタ「i」は、各ループで確定させたい王座。「j」は、新王を探すデータ/範囲を指す役割です。

ループカウンタ(i, j)が決まれば、擬似言語化します。手順を擬似言語の行/ブロック・変数として実現します。

iに要素数lenghtを絡めたり、jにiとlengthを絡めるなどは、慣れと経験があればそのうち組めますよ。




まとめ

お疲れ様でした!

手順から二重ループ/カウンタの組立ができるようになりそうですかね。最初は難しいかもですが、考えなれてくると、組み上げられるようになりますよ。暗記ではなく、考えることに挑戦し続けて下さいね。

次回は「挿入ソート」を学習します。ソートアルゴリズムの基礎3種類の学習は終わるので。>挿入ソートのNote(作成中*)


最後に私のお薦めの演習順番。
❶学習前の”分からせ”
>【FEB】サンプル問題2のNote
❷テキスト
>【FEB】擬似言語の教科書Note
>【FEB】擬似言語の理解演習Note ←いまこの辺
↓※必要なら
うかる! 基本情報技術者 [科目B・セキュリティ編](amazon)
うかる! 基本情報技術者 [科目B・アルゴリズム編](amazon)
❸各年度の公開問題
>【FEB】令和07年科目BのNote
>【FEB】令和06年科目BのNote
>【FEB】令和05年科目BのNote
➍解法の総復習(➋や➌と併用可)
>【FEB】擬似言語の11の解法Note
➎模擬試験
>【FEB】サンプル問題1のNote(擬似言語)
>【FEB】サンプル問題1のNote(セキュリティ)


いいなと思ったら応援しよう!

せんないの過去問解説Note 学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ

この記事が参加している募集