この記事で分かること(目次)
1. 🔄 整列(ソート)って何?
整列(ソート)とは、データをある規則(たとえば昇順や降順)に並び替える処理のことです。
基本情報技術者試験では、この「並び替えの考え方やアルゴリズムの特徴」を理解しておくことがとても大切なようです。
2. 🧮 よく出る整列アルゴリズム3選!
① バブルソート(Bubble Sort)
- 隣り合う要素を比べて、大きい(または小さい)方を後ろに移動。
- 何回も繰り返して、最後には一番大きい(または小さい)要素が端に集まる。
- 特徴:単純で実装しやすいが、遅い(O(n²))
# Pythonイメージ
for i in range(len(A)-1):
for j in range(len(A)-i-1):
if A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
② 選択ソート(Selection Sort)
- 配列から「最小(または最大)」の値を探し、先頭と交換。
- これを未整列部分で繰り返す。
- 特徴:交換回数が少ないが、探索に時間がかかる(O(n²))
for i in range(len(A)-1):
min_index = i
for j in range(i+1, len(A)):
if A[j] < A[min_index]:
min_index = j
A[i], A[min_index] = A[min_index], A[i]
③ 挿入ソート(Insertion Sort)
- 配列の左から1つずつ取り出して、正しい位置に「挿入」していく。
- 特徴:すでに整列されているデータに強い(O(n) 〜 O(n²))
for i in range(1, len(A)):
key = A[i]
j = i - 1
while j >= 0 and A[j] > key:
A[j + 1] = A[j]
j -= 1
A[j + 1] = key
3. 📘 午後問題:アルゴリズムの穴埋めって?
午後問題では、擬似言語で記述されたアルゴリズムの一部が空欄になっており、それを埋める問題が出題されます。
例題:バブルソートの一部が空欄になっている
変数 A は要素数 N の配列である。
以下は、バブルソートにより A を昇順に並べ替える擬似言語である。
(1) i ← 0 から N−2 まで繰り返す
(2) j ← 0 から N−2−i まで繰り返す
(3) □1
temp ← A[j]
A[j] ← A[j+1]
A[j+1] ← temp
□1 に入るべき式は?
→ A[j] > A[j+1]
理由:昇順にしたいので、左側が大きかったら交換する必要がある。
4. 🎯 解き方のコツ
| ポイント | 内容 |
|---|---|
| 擬似コードの読み解き | 実際のコードに似ているが、少し抽象的なので慣れが必要。 |
| 変数の役割をつかむ | ループ変数や配列の意味を正しく理解する。 |
| トレース練習 | 実際に小さな配列で手で動かしてみると理解が早い! |
| パターン暗記はNG | 仕組みから理解することで、応用問題にも対応できる。 |
5. 🧪 おすすめの練習法
- 基本情報技術者試験 午後問題 過去問(平成〜令和)を実際に解いてみる
- 「ソート アルゴリズム 可視化」などでグラフィカルな説明を見て動きを理解する
✍️ まとめ
- 整列(ソート)は、データを並び替える基本操作で、バブル・選択・挿入の3つが頻出。
- 午後のアルゴリズム問題は、コードの空欄補完と処理の理解がセットで問われる。
- コツは「トレース練習」+「本質理解」。
