配列の併合(マージ)処理【基本情報技術者試験 科目B 公開問題】

令和6年度 基本情報技術者試験 サンプル問題 科目B 問4のブログのアイキャッチ画像 科目B 公開問題
広告

← 科目Bの公開問題一覧へ戻る

 基本情報技術者試験の科目Bの公開問題を題材に,配列の併合(マージ)処理について学習します。この問題では,2つの整列された配列を1つの配列にまとめる処理を確認します。

広告

令和6年度 基本情報技術者試験 公開問題 科目B 問4

 次の記述中の       に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は1から始まる。

 関数 merge は,昇順に整列された整数型の配列 data1 及び data2 を受け取り,これらを併合してできる昇順に整列された整数型の配列を返す。

 関数 merge を merge({2,3},{1,4}) として呼び出すと,/*** α ***/ の行は      

〔プログラム〕

○整数型の配列: merge(整数型の配列: data1,整数型の配列: data2)

 整数型: n1 ← data1の要素数

 整数型: n2 ← data2の要素数

 整数型の配列: work ← {(n1 + n2)個の 未定義の値}

 整数型: i ← 1

 整数型: j ← 1

 整数型: k ← 1

 while ((i ≦ n1) and (j ≦ n2))

  if (data1[i] ≦ data2[j])

   work[k] ← data1[i]

   i ← i + 1

  else

   work[k] ← data2[j]

   j ← j + 1

  endif

  k ← k + 1

 endwhile

 while (i ≦ n1)

  work[k] ← data1[i]

  i ← i + 1

  k ← k + 1

 endwhile

 while (j ≦ n2)

  work[k] ← data2[j]  /*** α ***/

  j ← j + 1

  k ← k + 1

 endwhile

 return work

解答群

ア 実行されないイ 1回実行される
ウ 2回実行されるエ 3回実行される

【解答】

【解説】

mergeは,2つの昇順に整列された配列を比較し,小さい値から順番に別の配列へ格納する処理である。merge({2,3},{1,4}) では,最初の while 文で 1,2,3 の順に work へ格納される。この時点で data1 の要素は全て処理され,data2 には4が残っている。そのため,3番目の while 文で残った4を work に格納する。この処理は1回だけ行われるので,/*** α ***/ の行も1回実行される。

「令和6年度 基本情報技術者試験 公開問題 科目B 問4」の解答_画像

この問題のポイント

 この問題から学べることは,

  • 整列された2つの配列を比較しながら,1つの配列にまとめる方法
  • 2つの配列の要素を小さい順に取り出す方法
  • 一方の配列の要素がなくなった後,残った要素を処理する方法
  • i,j,k の値を追跡して,配列の変化を確認する方法

です。特に,2つの配列を比較して小さい方の要素を順番に格納し,一方の配列がなくなった後は,もう一方の配列の残りの要素をそのまま格納する処理を理解しておきましょう。

基本情報技術者試験の学習におすすめの参考書

基本情報技術者試験の合格を目指す方におすすめの参考書です。

令和08年 イメージ&クレバー方式でよくわかる かやのき先生の基本情報技術者教室
基礎理論からコンピュータ・ネットワーク・データベースまで、基本情報技術者試験の全範囲をわかりやすく学べる定番テキストです。図解が豊富で、初学者にもおすすめです。

キタミ式イラストIT塾 基本情報技術者 令和08年
イラストを使った解説が特徴の人気参考書です。基礎理論の考え方や計算問題もイメージで理解しやすく、独学学習との相性が良い一冊です。

令和08年 基本情報技術者 合格教本
試験範囲を体系的に学習したい方におすすめの教科書です。基礎理論の各テーマも丁寧に解説されており、理解を深めながら学習を進められます。

学習のお役に立ちましたら

この記事が少しでも学習のお役に立ちましたら,今後も分かりやすい解説や学習コンテンツを継続してお届けする励みになります。

よろしければ、このサイトを応援いただけますと嬉しいです。

※OFUSEは,クリエイターやコンテンツ制作を直接支援できるサービスです。

広告