基本情報技術者試験過去問 - 分野別(科目A) - アルゴリズム

令和8年7月修了 問6
データ列 2,7,3,5,6,8,4,1 に対して先頭からバブルソートを行い,小さい順に並べ替える。2回目に交換が行われるデータはどれか。
3と7
4と5
4と7
5と7
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
解説
バブルソートは,隣り合う2つの要素を比較して,順序が逆であれば交換するという操作を繰り返すことで,データを整列させるアルゴリズムです。データ列「2,7,3,5,6,8,4,1」の先頭から比較していくと,まず2と7を比較しますが,順序が正しいので交換は起きません。

次に,7と3を比較すると7のほうが大きいため交換が起こり,これが1回目の交換です。続いて,7と5を比較すると,これも7のほうが大きいため交換が起こり,これが2回目の交換になります。つまり「5と7」が2回目に交換されるデータの組で,「エ」が正解となります。
令和8年6月修了 問6
図の木構造において,木の根の左の葉から行きがけ順深さ優先によって探索した場合,●の葉は何番目に探索されるか。ここで,木の根の探索は0番目とする。

9
10
11
12
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
解説
「行きがけ順探索」(先行順探索)は,自分のノードを訪問したらすぐに番号を振り,その後に子ノードへ深く進んでいく方式です。根を0番目として,左の子から順に深く辿っていき,●の位置に到達するまでの訪問回数を数えると11番目になり,「ウ」が正解となります。

「ア」「イ」は,探索の途中で経路を数え間違えたり,兄弟ノードの順番を逆にしてしまった場合に出やすい誤答です。「エ」は,●自身を訪問した後の次のノードまで数えてしまった場合に起きやすいミスです。実際に図を見ながら,根→左の子→さらに左の子…と番号を一つずつ振っていく地道な作業がこの手の問題を解く確実な方法です。
令和8年公開問題 問2
クイックソートの処理方法を説明したものはどれか。
既に整列済みのデータ列の正しい位置に,データを追加する操作を繰り返していく方法である。
データ中の最小値を求め,次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく方法である。
適当な基準値を選び,それよりも小さな値のグループと大きな値のグループにデータを分割する。同様にして,グループの中で基準値を選び,それぞれのグループを分割する。この操作を繰り返していく方法である。
隣り合ったデータの比較と入替えを繰り返すことによって,小さな値のデータを次第に端の方に移していく方法である。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平30秋問6〕〔平28修12問6〕〔平27修6問6〕〔平25修1問5〕〔平22修12問6〕〔平21秋問6
解説
クイックソートでは,まず「基準値」(ピボット)を1つ選び,それより小さい値のグループと大きい値のグループにデータを分割します。そして,それぞれのグループの中で再び基準値を選んで同じように分割する,という操作を繰り返し,最終的に整列を完成させます。この考え方に一致するのが選択肢「ウ」です。

「ア」は「挿入ソート」の説明で,整列済みの部分に新しいデータを正しい位置へ挿入していく方法です。「イ」は「選択ソート」の説明で,未整列部分から最小値を探して並べる方法です。「エ」は「バブルソート」の説明で,隣り合うデータを比較・交換しながら並べ替える方法です。
令和8年1月修了 問6
2分探索において,データの個数が4倍になると,最大探索回数はどうなるか。ここで,データの個数は十分に多いものとする。
1回増える。
2回増える。
約2倍になる。
約4倍になる。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令7修1問6〕〔令5修12問6
解説
2分探索のアルゴリズムに関する計算量の性質を問う問題です。2分探索(バイナリサーチ)は,探索対象のデータ数がNのとき,最大探索回数がおおよそ log2N に比例して増えるという特徴があります。データの個数が4倍になったとき,最大探索回数がどう変化するかを考えます。

log2(4N) = log2N + log24 = log2N + 2 という関係が成り立つため,データが4倍になると,最大探索回数はちょうど2回増えることになります。「約2倍」「約4倍」という表現の選択肢は,線形探索データ数に比例して探索回数が増える方式)と混同した誤答です。2分探索の計算量データ数の対数(log)に比例するという点を押さえておきましょう。
令和8年1月修了 問37
次の流れ図において,
 ① → ② → ③ → ⑤ → ② → ③ → ④ → ② → ⑥
の順に実行させるために,①においてmとnに与えるべき初期値aとbの関係はどれか。ここで,a,bはともに正の整数とする。

a = 2b
2a = b
2a = 3b
3a = 2b
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令5公問11〕〔令3修12問47〕〔平28修6問48〕〔平25修6問52〕〔平24修1問51
解説
流れ図(フローチャート)の実行順序から,変数mとnの初期値の関係を求める問題です。この流れ図は,①でmにa,nにbを代入した後,②でmとnが等しいかどうかを判定し,等しくなければ③でmとnの大小を比較して,mの方が大きければ④でmからnを引き(m←m-n),nの方が大きければ⑤でnからmを引く(n←n-m)という処理を,mとnが等しくなるまで繰り返しています。これは「ユークリッドの互除法」の実装です。

問題文で指定された実行順序は「①→②→③→⑤→②→③→④→②→⑥」であり,これは「①で初期化した後,②で不一致と判定され,③でm<nと判定されて⑤(n←n-m)を実行し,再び②で不一致,③でm>nと判定されて④(m←m-n)を実行し,最後に②で一致と判定されて⑥へ進む」という流れを意味します。

この一連の流れをa・bの式で表しながらたどっていくと,1回目はnがb-aに更新され,2回目はmがa-(b-a)=2a-bに更新され,最終的にmとnが等しくなる(2a-b=b-a)という条件から,3a=2bという関係が導かれます。

誤りの選択肢「ア」「イ」「ウ」は,いずれも似た形の比率ですが,実際にその値を代入して同じ手順でトレースすると,指定された順序(⑤の次に④,その次に⑥)どおりには進まず,途中で別の分岐に入ってしまうため誤りとなります。フローチャート問題は,変数の変化を一段ずつ文字式で書き出しながら,指定された経路と実際の分岐条件が一致するかを確認していくことが,正解への確実な近道です。
令和7年12月修了 問6
クイックソートの処理方法を説明したものはどれか。
既に整列済みのデータ列の正しい位置に,データを追加する操作を繰り返していく方法である。
データ中の最小値を求め,次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく方法である。
適当な基準値を選び,それよりも小さな値のグループと大きな値のグループにデータを分割する。同様にして,グループの中で基準値を選び,それぞれのグループを分割する。この操作を繰り返していく方法である。
隣り合ったデータの比較と入替えを繰り返すことによって,小さな値のデータを次第に端の方に移していく方法である。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平30秋問6〕〔平28修12問6〕〔平27修6問6〕〔平25修1問5〕〔平22修12問6〕〔平21秋問6
解説
クイックソートの処理方法を説明したものを選ぶ問題です。「クイックソート」(quick soret)とは,適当な基準値(ピボット)を選び,それより小さい値のグループと大きい値のグループにデータを分割し,それぞれのグループの中でさらに基準値を選んで分割するという操作を再帰的に繰り返して整列させるアルゴリズムです。選択肢「ウ」が正しい説明です。

「ア」は挿入ソートの説明であり,既に整列済みの列の正しい位置にデータを追加していく方法です。「イ」は選択ソートの説明で,最小値を順に選び出していく方法です。「エ」はバブルソートの説明で,隣り合うデータを比較して入れ替えることで整列させる方法です。
令和7年6月修了 問6
データの整列方法に関する記述のうち,適切なものはどれか。
クイックソートでは,ある一定間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返す。
シェルソートでは,隣り合う要素を比較して,大小の順が逆であれば,それらの要素を入れ替えるという操作を繰り返す。
バブルソートでは,中間的な基準値を決めて,それよりも大きな値を集めた区分と小さな値を集めた区分に要素を振り分ける。次に,それぞれの区分の中で同様な処理を繰り返す。
ヒープソートでは,未整列の部分を順序木に構成し,そこから最大値又は最小値を取り出して既整列の部分に移す。この操作を繰り返して,未整列部分を縮めていく。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平28修7問7〕〔平25修7問5
解説
ヒープソート」(heap sort)は,未整列部分のデータを「順序木」と呼ばれるヒープ構造に構成し,その中から最大値または最小値を取り出して既整列部分に移すという操作を繰り返すことで,未整列部分を徐々に縮めながら整列を完成させるアルゴリズムです。正解は「エ」です。

「ア」は実際にはシェルソートの説明になっており,クイックソートの説明としては誤りです。「イ」は逆にバブルソートの説明であり,シェルソートの説明としては誤りです。「ウ」はクイックソートの説明であるにもかかわらずバブルソートの項目に書かれており,対応が入れ替わっています。それぞれのアルゴリズムの手順を正確に区別して覚えることが重要です
令和6年12月修了 問4
関数f(x)は,引数も戻り値も実数型である。この関数を使った,①〜⑤から成る手続を考える。手続の実行を開始してから②~⑤を十分に繰り返した後に,③で表示されるyの値に変化がなくなった。このとき成立する関係式はどれか。

① x ← a
② y ← f(x)
③ yの値を表示する。
④ x ← y
⑤ ②に戻る。
f(a) = y
f(y) = 0
f(y) = a
f(y) = y
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令3修6問3〕〔平27秋問3〕〔平26修1問4
解説
この手続きは,xに関数f(x)を適用してyを求め,そのyを次のxとして再びf(x)を適用する,という計算を何度も繰り返すものです。

問題文では,この繰り返しを十分に行った後,③で表示されるyの値がそれ以上変化しなくなった,とあります。これはつまり,ある回のxを関数fに入れて出てきたyの値が,次にxとして使われても,また同じyが出てくるようになった,ということを意味します。言い換えると,xとyが同じ値になり,その値をfに入れても結果が変わらない状態,すなわちf(y)=yという関係が成り立っている状態です。これは数学的には「不動点」と呼ばれる考え方です。従って,正解は「エ」です。

「ア」は,最初の1回だけの計算結果を表しており,繰り返した末に値が変化しなくなったという条件を反映していません。「イ」の,yを関数に入れた結果が0になるという条件は,問題文からは導けません。「ウ」の,yを関数に入れた結果が最初のaに戻るという条件も,値が変化しなくなったという状況とは合致しません。
令和6年12月修了 問6
アルファベット3文字で構成されるキーがある。次の式によってハッシュ値hを決めるとき,キー “SEP” と衝突するのはどれか。ここで,a mod b は,aをbで割った余りを表す。

h = (キーの各アルファベットの順位の総和) mod 27

APR
FEB
JAN
NOV
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令6修1問6〕〔令4修1問8〕〔平26修1問8〕〔平22修7問6
解説
アルファベット3文字のキーから,決められた計算式でハッシュ値を求め,別のキーと同じハッシュ値になる(衝突する)ものを探す問題です。表にあるとおり,アルファベットにはA=1からZ=26までの順位が割り振られています。

まず,基準となるキー「SEP」のハッシュ値を計算すると,S=19,E=5,P=16なので,順位の合計は19+5+16=40となり,これを27で割った余りを求めると,40÷27=1あまり13なので,ハッシュ値は13です。一方,「イ」の「FEB」は,F=6,E=5,B=2なので合計は6+5+2=13となり,これを27で割った余りはそのまま13です。SEPのハッシュ値13と一致するため,これが衝突する組み合わせであり,正解は「イ」です。

他の選択肢についても同様に計算すると,「ア」の「APR」はA=1,P=16,R=18で合計35,27で割った余りは8,「ウ」の「JAN」はJ=10,A=1,N=14で合計25,27で割った余りは25,「エ」の「NOV」はN=14,O=15,V=22で合計51,27で割った余りは24となり,いずれも13とは一致しないため不正解です。
令和6年7月修了 問6
昇順に整列されたn個のデータ配列に格納されている。探索したい値を2分探索法で探索するときの,およその比較回数を求める式はどれか。
log2n
(log2n+1)/2
n
n2
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令5修6問6〕〔平28修6問7〕〔平26修6問6〕〔平24修6問6〕〔平21春問7
解説
「2分探索法」は,整列済みのデータに対して探索範囲を半分ずつに絞り込みながら目的の値を探す方法です。n個のデータに対して1回の比較で探索範囲がおよそ半分になるため,探索範囲が1つになるまでの比較回数はおよそlog2nとなります。「ア」が正解です。

「イ」の式は平均計算量の考え方を中途半端に組み合わせたような式で,2分探索法の本質的な計算量を正しく表していません。

「ウ」のnは,データを先頭から順に一つずつ調べていく線形探索法計算量に相当します。

「エ」のn2は,二重ループを伴うような処理でよく見られる計算量であり,探索アルゴリズムとしては非効率な部類に入ります。
令和6年6月修了 問6
整列アルゴリズムの一つであるクイックソートの記述として,適切なものはどれか。
対象集合から基準となる要素を選び,これよりも大きい要素の集合と小さい要素の集合に分割する。この操作を繰り返すことによって,整列を行う。
対象集合から最も小さい要素を順次取り出して,整列を行う。
対象集合から要素を順次取り出し,それまでに取り出した要素の集合に順序関係を保つよう挿入して,整列を行う。
隣り合う要素を比較し,逆順であれば交換して,整列を行う。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令3修1問8〕〔令1修6問5〕〔平29修6問6〕〔平27秋問7〕〔平24修6問7〕〔平23春問8
解説
クイックソートは,対象の集合から基準となる要素(ピボット)を選び,それより大きい要素の集合と小さい要素の集合に分割するという操作を繰り返すことで整列を行うアルゴリズムです。この説明に合致するのは「ア」です。

「イ」は選択ソートの説明(最小値を順に取り出す),「ウ」は挿入ソートの説明(順序を保ちながら挿入していく),「エ」はバブルソートの説明(隣接要素を比較して交換する)に該当します。それぞれの整列アルゴリズムの特徴的な操作を正しく覚えておくことが,この種の問題を解く鍵になります。
令和6年公開問題 問2
キーが小文字のアルファベット1文字(a,b,…,z のいずれか)であるデータを,大きさが10のハッシュ表に格納する。ハッシュ関数として,アルファベットのASCIIコードを10進表記法で表したときの1の位の数を用いることにする。衝突が起こるキーの組合せはどれか。ASCIIコードでは,昇順に連続した2進数が,アルファベット順にコードとして割り当てられている。
a と i
b と r
c と l
d と x
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1修12問9〕〔平29修12問7
解説
ハッシュ関数を用いたハッシュ表への格納において,衝突が起こるキーの組み合わせを求める問題です。

ハッシュ関数ASCIIコードの10進表記の1の位を使うため,ASCIIコードの下1桁が同じアルファベット同士が衝突します。ASCIIコードはアルファベット順に連続して割り当てられているため,コードの差が10の倍数であるアルファベットの組み合わせが衝突することになります。

選択肢を確認すると,dとxはアルファベット順で20文字離れており,これはちょうど10の倍数であるため,ASCIIコードの下1桁が一致し衝突が発生します。従って,正解は選択肢「エ」です。

「ア」のaとiは8文字離れており10の倍数ではないため衝突しません。「イ」のbとrは16文字,「ウ」のcとlは9文字離れており,いずれも10の倍数ではないため衝突は起こりません。

ハッシュ関数による衝突を考える際は,「アルファベットの位置の差が使用するハッシュ表の大きさの倍数であるかどうか」に着目することがポイントです。
令和5年7月修了 問15
ハッシュ法の説明として,適切なものはどれか。
関数を用いてレコードのキー値からレコードの格納アドレスを求めることによってアクセスする方法
それぞれのレコードに格納されている次のレコードの格納アドレスを用いることによってアクセスする方法
レコードのキー値とレコードの格納アドレスの対応表を使ってアクセスする方法
レコードのキー値をレコードの格納アドレスとして直接アクセスする方法
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平28修6問19〕〔平26修12問20〕〔平25修6問26〕〔平22修6問24
解説
ハッシュ法」とは,データレコード)を格納したり検索したりする際に,ハッシュ関数と呼ばれる計算式を使って,レコードのキー値から,そのレコードを格納すべきアドレス(場所)を直接計算する方法です。この方法を使うことで,目的のレコードがどこにあるかを,順番に探し回ることなく,計算だけで素早く求めることができます。従って,正解は「ア」です。

「イ」は,それぞれのレコードに格納されている次のレコードの格納アドレスを用いてアクセスする方法についての説明で,これは「連結リスト」(ポインタを使ったリスト構造)を利用したアクセス方法についての説明です。

「ウ」は,レコードのキー値とレコードの格納アドレスの対応表を使ってアクセスする方法についての説明で,これは「索引」(インデックス)を用いたアクセス方法についての説明です。

「エ」は,レコードのキー値をレコードの格納アドレスとして直接アクセスする方法についての説明で,これはキー値がそのままアドレスとして使える特殊な場合(直接アドレス指定)についての説明であり,ハッシュ関数による計算を介するハッシュ法とは異なります。
令和5年1月修了 問8
次の関数 f(n,k) がある。f(4,2) の値は幾らか。

3
4
5
6
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平31修1問6〕〔平29修6問7〕〔平26秋問7〕〔平23修12問7〕〔平21修12問8
解説
関数 f(n,k) は,kが0またはnと等しいときには常に1を返し,それ以外の場合は f(n-1,k-1) と f(n-1,k) の和を返すという再帰的な定義になっています。この定義はパスカルの三角形における二項係数の計算方法と同じ構造を持っています。

f(4,2) を求めるには,f(3,1) と f(3,2) の和を計算する必要があります。さらに f(3,1) は f(2,0) と f(2,1) の和,f(3,2) は f(2,1) と f(2,2) の和というように,再帰的に値をさかのぼって計算していきます。

最終的に k=0 または k=n となる場所まで分解すると,全て1という値にたどり着き,それらを足し合わせていくことで f(4,2) の値が6であることが求まります。

これは二項係数で表すと4C2の値に相当し,実際にこれを計算しても6になることが確認できます。他の選択肢は再帰の展開を一部誤った場合に出てくる値です。再帰関数の問題では,木構造を描いて値をさかのぼりながら丁寧に計算することが重要です。
令和5年1月修了 問9
異なるn個のデータ昇順に整列された表がある。この表をm個のデータごとのブロックに分割し,各ブロックの最後尾のデータだけを線形探索することによって,目的のデータの存在するブロックを探し出す。次に,当該ブロック内を線形探索して目的のデータを探し出す。このときの平均比較回数を表す式はどれか。ここで,mは十分に大きく,nはmの倍数とし,目的のデータは必ず表の中に存在するものとする。
m+nm
m2+n2m
nm
n2m
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
解説
この探索方法は,n個のデータをm個ごとのブロックに分割し,まず各ブロックの末尾のデータだけを線形探索してブロックを特定し,その後ブロック内を線形探索するという二段階の方式です。

ブロックの数はnをmで割った値になります。ブロックを特定するための平均比較回数は,線形探索の性質上,ブロック数の半分程度になるため,(n/m)を2で割った値,すなわちn÷(2m)となります。

次に,目的のブロックが見つかった後,そのブロック内をさらに線形探索するため,平均してブロックサイズmの半分の比較回数,すなわちm/2が必要になります。この二つを足し合わせることで,全体の平均比較回数はm/2にn/(2m)を加えた式で表されます。これが選択肢「イ」の内容と一致します。

他の選択肢は,線形探索の平均比較回数を求める際に半分にする処理を忘れていたり,片方の探索段階の計算を省いていたりする誤りが含まれています。
令和4年12月修了 問8
バブルソートの説明として,適切なものはどれか。
ある間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返す。
中間的な基準値を決めて,それよりも大きな値を集めた区分と,小さな値を集めた区分に要素を振り分ける。次に,それぞれの区分の中で同様の操作を繰り返す。
隣り合う要素を比較して,大小の順が逆であれば,それらの要素を入れ替えるという操作を繰り返す。
未整列の部分を順序木にし,そこから最小値を取り出して整列済の部分に移す。この操作を繰り返して,未整列の部分を縮めていく。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
解説
バブルソート」とは,隣り合う要素を比較し,大小の順序が逆であればそれらの要素を入れ替えるという操作を,配列の端から端まで繰り返し行うことで,要素を整列させるアルゴリズムです。この操作を配列全体に対して繰り返すことで,最終的に全ての要素が正しい順序に並び替えられます。正解は「ウ」です。

「ア」は,ある間隔おきに取り出した要素から成る部分列をそれぞれ整列し,徐々に間隔を詰めながら同様の操作を繰り返す手法についての説明ですが,これは「シェルソート」です。

「イ」は,中間的な基準値を決めて,それより大きい値の区分と小さい値の区分に要素を振り分け,それぞれの区分の中で同様の操作を繰り返す手法についての説明ですが,これは「クイックソート」です。

「エ」は,未整列の部分を順序木にし,そこから最小値を取り出して整列済みの部分に移すという操作を繰り返す手法についての説明ですが,これは「ヒープソート」です。
令和4年12月修了 問9
配列Aの1番目からN番目の要素に整数が格納されている(N>1)。次の図は,Xと同じ値が何番目の要素に格納されているかを調べる流れ図である。この流れ図の実行結果として,適切な記述はどれか。

Xと同じ値が配列中にない場合,kには1が設定されている
Xと同じ値が配列中にない場合,kにはNが設定されている。
Xと同じ値が配列の1番目とN番目の2か所にある場合,kには1が設定されている。
Xと同じ値が配列の1番目とN番目の2か所にある場合,kにはNが設定されている。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平25修6問7
解説
この流れ図は,配列Aの1番目からN番目までの要素を順番に調べ,Xと同じ値が格納されている位置kを探索するアルゴリズムです。

流れ図を見ると,kの値がNを超えていない限り,A(k)がXと一致するかどうかを確認し,一致すれば処理を終了,一致しなければkを1増やして次の要素を確認するという流れになっています。

この処理では,配列の先頭から順番に確認していくため,もしXと同じ値が配列の1番目とN番目の両方に存在する場合,先に見つかるのは1番目の要素であり,その時点でkが1として処理が終了します。

従って,Xと同じ値が配列の1番目とN番目の2か所に存在する場合,kには1が設定されることになり,選択肢「ウ」が正解です。

選択肢「ア」と「イ」は,Xと同じ値が配列中に存在しない場合の記述ですが,この流れ図ではkがNを超えた時点でループを抜けて終了するため,実際にはkにはN+1に近い値が設定されることになり,選択肢の記述とは異なります。

「エ」は,2か所に値がある場合にNが設定されるとしていますが,先頭から探索するため実際にはNではなく1が設定されます。
令和4年12月修了 問10
自然数nに対して,次のとおり再帰的に定義される関数 f(n) を考える。f(5) の値はどれか。

 f(n):if n≦1 then return 1 else return n+f(n-1)
6
9
15
25
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1秋問11〕〔平30修7問7〕〔平27秋問8〕〔平21春問8
解説
この関数 f(n) は,nが1以下であれば1を返し,それ以外の場合はnと f(n-1) の和を返すという再帰的な定義になっています。

f(5) を求めるには,まず f(5) が f(4) に5を足した値であることに着目し,さらに f(4) が f(3) に4を足した値,f(3) が f(2) に3を足した値,f(2) がf(1) に2を足した値というように,再帰的にさかのぼって計算していきます。最終的にf(1)は,条件よりnが1以下であるため1を返します。

ここから逆にたどっていくと,f(2) は1に2を足した3,f(3) は3に3を足した6,f(4) は6に4を足した10,f(5) は10に5を足した15となります。従って,f(5) の値は15であり,選択肢「ウ」が正解です。

この関数は,実は1からnまでの整数を全て足し合わせた合計値を計算していることと同じであるため,公式である n×(n+1)÷2 という式を使っても,5×6を2で割った15という同じ答えを得ることができます。
令和4年7月修了 問10
整数x,y(x>y≧0)に対して,次のように定義された関数F(x,y)がある。F(231,15)の値は幾らか。ここで,x mod yはxをyで割った余りである。

2
3
5
7
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令2修12問9〕〔平30修12問5〕〔平28秋問7〕〔平26修12問7
令和4年6月修了 問5
与えられた正の整数 x0,x1(x0>x1)の最大公約数を,次の手順で求める。x0=175,x1=77の場合,手順(2)は何回実行するか。ここで,“A←B” は,BをAに代入することを表す。

〔手順〕
(1)i ← 2
(2)xi ← “xi-2をxi-1で割った剰余”
(3)xi=0 ならばxi-1を最大公約数として終了する。
(4)“i ← i+1” として(2)に戻る。
3
4
6
7
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令2修6問4〕〔平30修1問3〕〔平24秋問2
令和4年6月修了 問7
2分木の各ノードがもつ記号を出力する再帰的プログラムProc(n)の定義は,次のとおりである。このプログラムを,図の2分木の根(最上位のノード)に適用したときの出力はどれか。

Proc(n){
 nに左の子 l があればProc(l)を呼び出す。
 nに右の子 r があればProc(r)を呼び出す。
 nの記号を出力して終了する。
}

+a*-bcd
a+b-c*d
abc-d*+
b-c*d+a
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令2修7問7〕〔平30修6問5〕〔平28修12問5〕〔平26春問6
令和4年6月修了 問9
配列 A[i](i=1,2,...,n) を,次のアルゴリズムによって整列する。行2~3の処理が初めて終了したとき,必ず実現されている配列の状態はどれか。

アルゴリズム
行番号
  1 iを1からn-1まで1ずつ増やしながら行2~3を繰り返す
  2 jをnからi+1まで1ずつ減らしながら行3を繰り返す
  3 もし A[j]<A[j-1] ならば,A[j]とA[j-1]を交換する
A[1]が最小値になる。
A[1]が最大値になる。
A[n]が最小値になる。
A[n]が最大値になる。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平24修7問6
令和4年6月修了 問10
正の整数Mに対して,次の二つの流れ図に示すアルゴリズムを実行したとき,結果xの値が等しくなるようにしたい。aに入れる条件として,適切なものはどれか。

n<M
n>M-1
n>M
n>M+1
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1修12問10〕〔平27修1問6
令和4年1月修了 問9
再帰的に定義された手続 proc で,proc(5)を実行したとき,印字される数字を順番に並べたものはどれか。

proc(n)
 n=0 ならば戻る
 そうでなければ
 {
  nを印字する
  proc(n-1)を呼び出す
  nを印字する
 }
 を実行して戻る
543212345
5432112345
54321012345
543210012345
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平30修1問7
令和3年12月修了 問8
要素番号が0から始まる配列 TANGO がある。n個の単語が TANGO[1] から TANGO[n] に入っている。図は,n番目の単語を TANGO[1] に移動するために,TANGO[1] から TANGO[n-1] の単語を順に一つずつ後ろにずらして単語表を再構成する流れ図である。aに入れる処理として,適切なものはどれか。

TANGO[i] ← TANGO[n-i]
TANGO[i+1] ← TANGO[i]
TANGO[n-i] ← TANGO[i]
TANGO[n-i] ← TANGO[i+1]
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令2修7問9〕〔平30修6問7〕〔平28修12問8〕〔平26修6問7〕〔平23秋問7〕〔平22修6問7
令和3年7月修了 問9
探索表の構成法を例とともに a〜c に示す。最も適した探索手法の組合せはどれか。ここで,探索表のコードの空欄は表の空きを示す。


abc
2分探索線形探索ハッシュ表探索
2分探索ハッシュ表探索線形探索
線形探索2分探索ハッシュ表探索
線形探索ハッシュ表探索2分探索
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
令和3年7月修了 問10
nの階乗再帰的に計算する関数 F(n) の定義において,aに入れるべき式はどれか。ここで,nは非負の整数とする。

 n>0のとき,F(n)=[ a ]
 n=0のとき,F(n)=1
n+F(n-1)
n-1+F(n)
n×F(n-1)
(n-1)×F(n)
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1修6問7〕〔平29修12問8〕〔平28春問7〕〔平25修12問7
令和3年6月修了 問8
自然数をキーとするデータを,ハッシュ表を用いて管理する。キーxのハッシュ関数 h(x) を
 h(x) = x mod n
とすると,任意のキーaとbが衝突する条件はどれか。ここで,nはハッシュ表の大きさであり,x mod nはxをnで割った余りを表す。
a+bがnの倍数
a-bがnの倍数
nがa+bの倍数
nがa-bの倍数
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
令和3年6月修了 問9
関数 f(x,y) が次のとおり定義されているとき,f(775,527) の値は幾らか。ここで,x mod y はxをyで割った余りを返す。

 f(x,y):if y = 0 then return x else return f(y,x mod y)
0
31
248
527
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1修7問8〕〔平29春問6〕〔平26修7問8〕〔平23春問6
令和3年6月修了 問10
xとyを自然数とするとき,流れ図で表される手続を実行した結果として,適切なものはどれか。


qの値rの値
x÷yの余りx÷yの商
x÷yの商x÷yの余り
y÷xの余りy÷xの商
y÷xの商y÷xの余り
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平28春問8〕〔平25春問8
令和3年1月修了 問10
次の流れ図は,2数A,Bの最大公約数を求めるユークリッドの互除法を,引き算の繰返しによって計算するものである。Aが876,Bが204のとき,何回の比較で処理は終了するか。

4
9
10
11
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平31春問7〕〔平28修12問7〕〔平27修7問7〕〔平24修12問6
令和2年12月修了 問1
次の流れ図は,10進整数j(0<j<100)を8桁の2進数に変換する処理を表している。2進数は下位桁から順に,配列の要素 NISHIN(1) から NISHIN(8) に格納される。流れ図のa及びbに入れる処理はどれか。ここで,j div 2 はjを2で割った商の整数部分を,j mod 2はjを2で割った余りを表す。


ab
j ← j div 2NISHIN(k) ← j mod 2
j ← j mod 2NISHIN(k) ← j div 2
NISHIN(k) ← j div 2j ← j mod 2
NISHIN(k) ← j mod 2j ← j div 2
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1秋問1〕〔平27修12問1〕〔平24修1問1
令和2年12月修了 問8
配列Aが図2の状態のとき,図1の流れ図を実行すると,配列Bが図3の状態になった。図1のaに入れる操作はどれか。ここで,配列A,Bの要素をそれぞれ A(i,j),B(i,j) とする。

B(7-i,7-j) ← A(i,j)
B(7-j,i) ← A(i,j)
B(i,7-j) ← A(i,j)
B(j,7-i)←A(i,j)
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔令1秋問9〕〔平30修7問5〕〔平27秋問6
令和2年12月修了 問10
顧客番号をキーとして顧客データを検索する場合,2分探索を使用するのが適しているものはどれか。
顧客番号から求めたハッシュ値が指し示す位置に配置されているデータ構造
顧客番号に関係なく,ランダムに配置されているデータ構造
顧客番号の昇順に配置されているデータ構造
顧客番号をセルに格納し,セルのアドレス順に配置されているデータ構造
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平29春問7
令和2年7月修了 問4
0≦x≦1 の範囲で単調に増加する連続関数 f(x) が f(0)<0≦f(1) を満たすときに,区間内で f(x)=0 であるxの値を近似的に求めるアルゴリズムにおいて,(2)は何回実行されるか。

アルゴリズム
(1)x0 ← 0,x1 ← 1とする。
(2)x ← x0+x12 とする。
(3)x1 - x < 0.001 ならばxの値を近似値として終了する。
(4)f(x)≧0 ならば x1 ← x として,そうでなければ x0 ← x とする。
(5)(2)に戻る。
10
20
100
1,000
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
令和2年6月修了 問10
長さ m,n の文字列をそれぞれ格納した配列 X,Y がある。図は,配列Xに格納した文字列の後ろに,配列Yに格納した文字列を連結したものを,配列に格納するアルゴリズムを表す流れ図である。図中の a,b に入れる処理として,適切なものはどれか。ここで,1文字が一つの配列要素に格納されるものとする。


ab
Z(k) ← X(k)Z(m+k) ← Y(k)
Z(k) ← X(k)Z(n+k) ← Y(k)
Z(k) ← Y(k)Z(m+k) ← X(k)
Z(k) ← Y(k)Z(n+k) ← X(k)
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平30修12問7〕〔平28修1問6〕〔平26春問8
令和1年7月修了 問7
次に示すユークリッドの互除法(方法1,方法2)で,正の整数a,bの最大公約数は,それぞれとnのどちらの変数に求まるか。ここで,m mod nは,mをnで割った余りを表す。


方法1方法2
mm
mn
nm
nn
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成31年1月修了 問7
右の流れ図が左の流れ図と同じ動作をするために,a,bに入るYesとNoの組合せはどれか。


ab
NoNo
NoYes
YesNo
YesYes
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平27修6問7〕〔平25秋問8
平成30年12月修了 問6
2分探索に関する記述のうち,適切なものはどれか。
2分探索するデータ列は整列されている必要がある。
2分探索は線形探索よりも常に速く探索できる。
2分探索は探索データ列の先頭から開始する。
n個のデータの2分探索に要する比較回数は,nlog2nに比例する。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平26秋問6
平成30年春期 問7
表探索におけるハッシュ法の特徴はどれか。
2分木を用いる方法の一種である。
格納場所の衝突が発生しない方法である。
キーの関数値によって格納場所を決める。
探索に要する時間は表全体の大きさにほぼ比例する。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平27修7問6〕〔平25修1問6
平成29年7月修了 問6
昇順に整列済みの配列要素 A(1),A(2),...,A(n) から,A(m)=k となる配列要素A(m)の添字mを2分探索法によって見つける処理を図に示す。終了時点で m=0 である場合は,A(m)=k となる要素は存在しない。図中のaに入る式はどれか。ここで,“/” は,小数点以下を切り捨てる除算を表す。

(x+y) → m
(x+y)/2 → m
(x-y)/2 → m
(y-x)/2 → m
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平24秋問6
平成29年春期 問5
次の流れ図は,シフト演算と加算の繰返しによって2進整数の乗算を行う手順を表したものである。この流れ図中のa,bの組合せとして,適切なものはどれか。ここで,乗数と被乗数は符号なしの16ビットで表される。X,Y,Zは32ビットレジスタであり,桁送りには論理シフトを用いる。最下位ビットを第0ビットと記す。


ab
Yの第0ビットXを1ビット左シフト,Yを1ビット右シフト
Yの第0ビットXを1ビット右シフト,Yを1ビット左シフト
Yの第15ビットXを1ビット左シフト,Yを1ビット右シフト
Yの第15ビットXを1ビット右シフト,Yを1ビット左シフト
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平26修7問6
平成27年12月修了 問6
次の文章はあるソート(整列法)について述べたものである。そのソートはどれか。

 “データの並びに対して基準となるある値を定めて,その値より小さいデータの並びが前半に,大きいデータが後半に並ぶように並べ替える。このようにして出来た前半の並び,及び後半の並びそれぞれに対して,再帰的に同じ操作を繰り返す。ここで,データの並びに対してその都度決める基準値は分割される。前半の並びと後半の並びの大きさが同じ程度の大きさになるように選ぶことが望ましい。”
基数ソート
クイックソート
バブルソート
マージソート
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平23修12問6
平成27年12月修了 問8
流れ図は,1からN(N≧1)までの整数の総和(1+2+…+N)を求め,結果を変数xに入れるアルゴリズムを示している。流れ図中のaに当てはまる式はどれか。

i=N
i<N
i>N
x>N
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平22修7問7
平成27年春期 問6
整列されたn個のデータの中から,求める要素を2分探索法で探索する。この処理の計算量のオーダを表す式はどれか。
logn
n
n2
nlogn
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成26年1月修了 問7
2,000個の相異なる要素が,キーの昇順に整列された表がある。外部から入力したキーによってこの表を2分探索して,該当するキーの要素を取り出す。該当するキーが必ず表中にあることが分かっているとき,キーの比較回数は最大何回か。
9
10
11
12
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成25年12月修了 問6
昇順に整列されたn個のデータが格納されている配列Aがある。流れ図は,2分探索法を用いて配列Aからデータを探し出す処理を表している。a,b に入る操作の適切な組合せはどれか。ここで,除算の結果は小数点以下が切り捨てられる。


ab
k+1→hik-1→lo
k-1→hik+1→lo
k+1→lok-1→hi
k-1→lok+1→hi
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平23修1問8
平成25年1月修了 問7
長さ m,n の文字列を格納した配列 X,Y がある。図は,長さの文字列の後ろに長さんの文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中の a,b に入れる処理として,適切なものはどれか。ここで,1文字が一つの配列要素に格納されるものとする。


ab
X(k) → Z(k)Y(k) → Z(m+k)
X(k) → Z(k)Y(k) → Z(n+k)
Y(k) → Z(k)X(k) → Z(m+k)
Y(k) → Z(k)X(k) → Z(n+k)
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平22修12問8
平成24年秋期 問7
n!の値を,次の関数 F(n) によって計算する。乗算の回数を表す式はどれか。

n-1
n
n2
n!
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成24年7月修了 問7
次のような一連の代入文がある。
 x+y → x
 x-y → y
 x-y → x
x,yの初期値をそれぞれA,Bとするとき,最後の代入文の実行が終了した時点におけるxとyの値の適切な組合せはどれか。

xy
AB
BA
2BA-B
A-BA-B
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成23年7月修了 問7
2分探索法に関する次の記述のうちで,適切なものはどれか。
データ昇順に並んでいるときだけ正しく探索できる。
データが昇順又は降順に並んでいるときだけ正しく探索できる。
データが昇順又は降順に並んでいる方が効率よく探索できる。
データの個数が偶数のときだけ正しく探索できる。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成23年6月修了 問7
流れ図に従って,選択ソートによって値を大きい順に整列するとき,α印の処理(比較)が実行される回数を表す式はどれか。

n(n-1)2
n(n-1)
n(n+1)2
n(n+1)
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平21修6問6
平成23年春期 問7
次の流れ図は,1から100までの整数の総和を求め,結果を変数に代入するアルゴリズムを示したものであるが,一部誤りがある。どのように訂正すればよいか。

①の処理を “0 → x” にする。
②の条件判定を “i:99” にする。
③の処理を “x+i → i” にする。
④の処理を “x+1 → x”にする。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成22年春期 問6
ハッシュ表探索において,同一のハッシュ値となる確率が最も低くなるのは,ハッシュ値がどの分布で近似されるときか。
2項分布
一様分布
正規分布
ポアソン分布
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成22年1月修了 問6
あらかじめ整列された1000人の電話番号から,目的の電話番号を2分探索法を用いて探索するとき,最大およそ何回の比較が必要になるか。
10
46
500
1000
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成21年12月修了 問7
6個の数値180,315,282,410,645,525を並べ替える。手順1~4は途中までの手順を示したものである。手順4まで終わったときの結果はどれか。

手順1 並びの左側から順に,数値の1の位の値によって0~9のグループに分ける。
手順2 次に0のグループの数値を左側から順に取り出して並べ,その右側に1のグループ,以下順に2~9のグループの数値を並べていく。
手順3 手順2で得られた数値の並びの左側から順に,数値の10の位によって0~9のグループに分ける。
手順4 手順2と同様に,0のグループの数値から順に並べる。

ここで,グループ内では,処理が行われた数値を左側から順に並べるものとする。
180,282,315,410,525,645
315,410,525,180,282,645
410,315,525,645,180,282
645,525,410,315,282,180
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成21年7月修了 問5
次の手順はシェルソートによる整列を示している。データ列7,2,8,3,1,9,4,5,6を手順(1)(4)に従って整列するとき,手順(3)を何回繰り返して完了するか。ここで,[ ] は小数点以下を切り捨てた結果を表す。

〔手順〕
(1)[データ数÷3]→Hとする。
(2)データ列を互いにH要素分だけ離れた要素の集まりからなる部分列とし,それぞれの部分列を,挿入法を用いて整列する。
(3)[H÷3]→Hとする。
(4)Hが0であればデータ列の整列は完了し,0でなければ(2)に戻る。
2
3
4
5
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
平成21年7月修了 問6
ヒープソートの説明として,適切なものはどれか。
ある間隔おきに取り出した要素から成る部分列をそれぞれ整列し,更に間隔を詰めて同様の操作を行い,間隔が1になるまでこれを繰り返す。
中間的な基準値を決めて,それよりも大きな値を集めた区分と,小さな値を集めた区分に要素を振り分ける。次に,それぞれの区分の中で同様な処理を繰り返す。
隣り合う要素を比較して,大小の順が逆であれば,それらの要素を入れ替えるという操作を繰り返す。
未整列の部分を順序木にし,そこから最小値を取り出して整列済の部分に移す。この操作を繰り返して,未整列の部分を縮めていく。
答え
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる