メインコンテンツへスキップ
見出し画像

【擬似言語⑫追ノ壱】選択ソート | アルゴのラスボス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。 学生時代にITパスポート試験・基本情報技術者試験・応用情報技術者試験を独学で高得点合格。情報処理安全確保支援士試験(セキスペ)・データベーススペシャリスト試験・ネットワークスペシャリスト試験・G検定なども取得。 2027年にPD-S受験予定。