2026年版・1-7

アルゴリズムとプログラミングの一問一答

基本情報技術者試験 科目A「基礎理論」から、アルゴリズムとプログラミングに関する4択問題を10問。「答えと解説を見る」を開くと、正解とその理由がその場で読めます。会員登録は不要です。

この分野の演習

全10問/解説つき・基本無料

アプリ形式で解く(全600問) 基礎理論の要点解説を読む
問題

上から順に解いてみてください。答えは各問の下で確認できます。科目Aの本試験と同じく、4択で出題しています。

問11-7

昇順に整列済みの1,000件のデータから、2分探索法で目的のデータを探すとき、最大の比較回数は何回か。

  • ①11回
  • ②10回
  • ③100回
  • ④500回
答えと解説を見る
正解 ②10回
解説
2分探索法は、整列済みのデータの中央の値と比べ、探す値が小さければ前半、大きければ後半に範囲を半分ずつ絞り込む方法です。1回比較するごとに範囲が半分になるので、データがn件のときの最大比較回数は、[log2n]+1 回([ ]は小数点以下切捨て)です。
29=512 ≦ 1,000 < 1,024=210 なので [log21,000]=9、最大比較回数は 9+1 = 10回です。

他の選択肢が不適切な理由
・11回:切捨てた値(9)ではなく切り上げた値(10)に1を加えた誤りです。
・100回:データ件数の10分の1としたもので、根拠がありません。
・500回:線形探索の平均比較回数(n/2)です。

覚え方のポイント
2分探索の前提は「データが整列済みであること」。最大比較回数は約log2n回で、1,000件なら約10回、100万件でも約20回と、件数が増えても比較回数はほとんど増えません。
問21-7

n件のデータが整列されずに並んでいる。探すデータが必ずその中に1件だけ含まれているとき、先頭から順に調べる線形探索法での平均比較回数として最も適切なものはどれか。

  • ①n/2回
  • ②n回
  • ③log₂n回
  • ④n²回
答えと解説を見る
正解 ①n/2回
解説
線形探索法は、データを先頭から順に1件ずつ比べていく方法です。探すデータが先頭にあれば1回、最後にあればn回で見つかります。どの位置にある確率も等しいとすると、平均の比較回数は(1+n)÷2 で、およそ n/2 回になります。データが整列されていなくても使えるのが長所です。

他の選択肢が不適切な理由
・n回:最大の比較回数(最後にある場合、または見つからない場合)です。
・log₂n回:整列済みのデータに対する2分探索法の、おおよその最大比較回数です。
・n²回:バブルソートなど、単純な整列アルゴリズムの計算量の目安です。

覚え方のポイント
「線形探索=平均n/2、最大n」「2分探索=最大log₂n(ただし整列済みが前提)」。データ件数が多いほど、2分探索の速さが際立ちます。
問31-7

整列アルゴリズムの一つであるバブルソートの説明として、最も適切なものはどれか。

  • ①データを半分ずつに分割し、整列しながら併合する操作を繰り返す
  • ②基準値を決め、それより小さい要素と大きい要素に分けて繰り返す
  • ③整列済みの部分に、次の要素を適切な位置に挿入して広げていく
  • ④隣り合う要素を比較して、順序が逆なら交換する操作を繰り返す
答えと解説を見る
正解 ④隣り合う要素を比較して、順序が逆なら交換する操作を繰り返す
解説
バブルソート(交換法)は、隣り合う2つの要素を比較し、順序が逆なら交換する操作を、端から端まで繰り返す整列方法です。1回の走査で最大(または最小)の値が端まで移動し、泡(バブル)が浮かび上がるように見えることから、この名前があります。仕組みは単純ですが、計算量はO(n2)で、データが多いと遅くなります。

他の選択肢が不適切な理由
・基準値で小さいものと大きいものに分ける:クイックソートの説明です。
・整列済みの部分に次の要素を挿入:挿入ソート(挿入法)の説明です。
・半分ずつに分割し、整列しながら併合:マージソートの説明です。

覚え方のポイント
整列アルゴリズムは名前と動作を1対1で覚えます。「バブル=隣と交換」「選択=最小を選んで先頭へ」「挿入=整列済みの列に差し込む」「クイック=基準値で分割」「マージ=分割して併合」「ヒープ=ヒープから最大(最小)を取り出す」。
問41-7

クイックソートの説明として、最も適切なものはどれか。

  • ①未整列の部分から最小の要素を選び、未整列の部分の先頭と交換する
  • ②隣り合う要素を比べ、順序が逆になっていれば交換する操作を繰り返す
  • ③基準値より小さい要素と大きい要素に分け、それぞれを同様に処理する
  • ④一定の間隔ごとに取り出した要素どうしを整列し、間隔を狭めていく
答えと解説を見る
正解 ③基準値より小さい要素と大きい要素に分け、それぞれを同様に処理する
解説
クイックソートは、データの中から基準値(ピボット)を1つ選び、それより小さい要素のグループと大きい要素のグループに分割し、それぞれのグループに対して同じ処理を再帰的に繰り返す整列方法です。平均の計算量はO(n log n)と高速ですが、基準値の選び方が悪いと、最悪でO(n2)になります。

他の選択肢が不適切な理由
・隣り合う要素を比べて交換:バブルソートの説明です。
・最小の要素を選んで先頭と交換:選択ソート(選択法)の説明です。
・一定の間隔ごとの要素を整列し、間隔を狭める:シェルソートの説明です。

覚え方のポイント
「クイック=ピボットで分割して再帰」。平均O(n log n)・最悪O(n2)という計算量の特徴もセットで問われます。
問51-7

次の整列アルゴリズムのうち、平均の計算量がO(n log n)であるものはどれか。

  • ①バブルソート
  • ②選択ソート
  • ③マージソート
  • ④挿入ソート
答えと解説を見る
正解 ③マージソート
解説
計算量は、データ件数nが増えたときに処理時間がどのように増えるかを表す目安です。マージソートは、データを半分ずつに分割していき(約log n段)、各段で全要素を併合する(n回程度)ため、計算量はO(n log n)です。最悪の場合でもO(n log n)を保てるのが特徴です。

他の選択肢が不適切な理由
・バブルソート:隣どうしの比較・交換を繰り返すため、平均の計算量はO(n2)です。
・選択ソート:最小値を探す操作をn回繰り返すため、O(n2)です。
・挿入ソート:平均O(n2)です。ただし、ほぼ整列済みのデータに対しては高速に動作します。

覚え方のポイント
「O(n2)の仲間=バブル・選択・挿入(単純な方法)」「O(n log n)の仲間=クイック(平均)・マージ・ヒープ(分割や木を使う方法)」と2つのグループで覚えましょう。
問61-7

関数 f(n) を次のように定義する。f(5) の値はいくらか。
f(n):n ≦ 1 のとき 1 を返す それ以外のとき n × f(n − 1) を返す

  • ①15
  • ②120
  • ③60
  • ④25
答えと解説を見る
正解 ②120
解説
f(n) は、自分自身を呼び出す再帰的な関数です。定義に従って展開します。
f(5) = 5 × f(4)
f(4) = 4 × f(3)
f(3) = 3 × f(2)
f(2) = 2 × f(1)
f(1) = 1(n ≦ 1 なので)
下から戻ると、f(2)=2、f(3)=6、f(4)=24、f(5)=120 です。これは5の階乗(5!)を求める関数です。

他の選択肢が不適切な理由
・15:1から5までの和(1+2+3+4+5)で、掛け算を足し算と取り違えた値です。
・25:5×5と計算した誤りです。
・60:f(1)まで展開せずに、5×4×3で止めた誤りです。

覚え方のポイント
再帰の問題は、終了条件(ここではn≦1)に達するまで展開してから、下から順に値を戻していくと確実に解けます。
問71-7

次の手続を実行した後の変数xの値はいくらか。
x ← 0 i を 1 から 5 まで 1 ずつ増やしながら、次を繰り返す x ← x + i × 2 繰返しの終わり

  • ①30
  • ②15
  • ③10
  • ④60
答えと解説を見る
正解 ①30
解説
iが1から5まで変わるたびに、xに i × 2 を加えていきます。
i=1:x = 0 + 2 = 2
i=2:x = 2 + 4 = 6
i=3:x = 6 + 6 = 12
i=4:x = 12 + 8 = 20
i=5:x = 20 + 10 = 30
まとめると、x = 2 ×(1+2+3+4+5)= 2 × 15 = 30 です。

他の選択肢が不適切な理由
・10:最後の i × 2(5×2)だけを答えた誤りです。
・15:2を掛けずに、iの合計だけを求めた誤りです。
・60:合計をさらに2倍してしまった誤りです。

覚え方のポイント
繰返しの処理は、変数の値の変化を表(トレース表)に書き出して1回ずつ追うのが基本です。科目Bのアルゴリズム問題でも同じ方法を使います。
問81-7

線形探索法で、探索するデータの末尾に目的の値と同じ値(番兵)を置いておく目的はどれか。

  • ①データに目的の値が複数含まれるとき、その個数を数えられるようにする
  • ②データを小さい順に並べ替えて、2分探索法を使えるようにする
  • ③探索の途中で目的の値が見つかったときに、処理をすぐ終了させる
  • ④データの終わりに達したかの判定を、繰返しごとに行わずに済ませる
答えと解説を見る
正解 ④データの終わりに達したかの判定を、繰返しごとに行わずに済ませる
解説
通常の線形探索では、繰返しのたびに「目的の値と一致したか」と「データの終わりに達したか」の2つを判定します。末尾に目的の値と同じ値(番兵)を置いておくと、必ずどこかで一致するため、「データの終わりに達したか」の判定を繰返しの中で行う必要がなくなり、比較の回数を減らせます。一致した位置が番兵の位置なら、「見つからなかった」と判断します。

他の選択肢が不適切な理由
・並べ替えて2分探索法を使えるようにする:番兵は並べ替えとは関係がありません。
・見つかったときに処理をすぐ終了させる:番兵がなくても、一致した時点で終了できます。
・複数含まれるときに個数を数える:番兵の目的ではありません。

覚え方のポイント
「番兵=必ず見つかるように置く見張り」。終わりの判定を省くための工夫です。
問91-7

プログラムの性質のうち、複数のタスクから同時に呼び出されても、それぞれに正しい結果を返すことができる性質はどれか。

  • ①再帰的(リカーシブ)
  • ②再使用可能(リユーザブル)
  • ③再配置可能(リロケータブル)
  • ④再入可能(リエントラント)
答えと解説を見る
正解 ④再入可能(リエントラント)
解説
再入可能(リエントラント)なプログラムは、実行中に別のタスクから同時に呼び出されても、互いに影響し合わずに正しく動作します。プログラムの命令の部分と、呼出しごとに変わるデータの部分を分け、データをタスクごとに別の領域に持つことで実現します。

他の選択肢が不適切な理由
・再使用可能(リユーザブル):一度実行した後、主記憶に読み込み直さずに、もう一度実行できる性質です。同時の呼出しまでは保証しません。
・再配置可能(リロケータブル):主記憶上のどの位置に読み込んでも実行できる性質です。
・再帰的(リカーシブ):実行中に自分自身を呼び出すことができる性質です。

覚え方のポイント
「リエントラント=同時に何人入ってきても大丈夫」「リユーザブル=使い回せる(順番に)」「リロケータブル=どこに置いても動く」「リカーシブ=自分を呼べる」。「再○○」の4つは頻出のセットです。
問101-7

XMLの特徴として、最も適切なものはどれか。

  • ①データベースの表を定義して、データを検索するための言語である
  • ②Webページの文字の色や配置などの見た目を指定する言語である
  • ③利用者がタグを独自に定義し、データの意味や構造を表す言語である
  • ④決められたタグを使って、Webページの文書構造を表す言語である
答えと解説を見る
正解 ③利用者がタグを独自に定義し、データの意味や構造を表す言語である
解説
XML(Extensible Markup Language)は、タグを使ってデータに意味や構造を付けるマークアップ言語です。「Extensible(拡張可能)」の名のとおり、利用者がタグを独自に定義できるため、様々な分野のデータを交換するための形式として使われています。

他の選択肢が不適切な理由
・見た目だけを指定する:CSS(スタイルシート)の説明です。
・データベースの表を定義し、検索する:SQLの説明です。
・決められたタグだけでWebページの文書構造を表す:HTMLの説明です。HTMLではタグの種類があらかじめ決められています。

覚え方のポイント
「HTML=決まったタグでWebページを作る」「XML=タグを自分で決めてデータを表す」「CSS=見た目を指定する」。似た用語は、目的の違いで区別しましょう。

基本情報技術者(科目A)の対策問題(全600問)に戻る

非公式の資格試験対策サイトです。独立行政法人情報処理推進機構(IPA)とは一切関係ありません。

※本ページでは、アクセス解析(Googleアナリティクス)と、広告の配信・成果の計測(A8.net)のためにCookie等を利用し、閲覧に関する情報をGoogle LLC・株式会社ファンコミュニケーションズへ送信しています。詳しくはプライバシーポリシーをご覧ください。

※本ページの問題・解説は、生成AI(人工知能)を活用して作成しています。

【PR】