【擬似言語⑫追ノ壱】選択ソート | アルゴのラスボス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が有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼
もちろんコメントでも結構です(・ω・▼)ノシ