以前から気になっていたので、問題を解いてみることにしてみました。
公式の解答はありませんし、解説しているサイトも見つからない・・・
問題はこちら。
https://www.ouj.ac.jp/hp/gakuin/pdf/2019joho.pdf
第2問(ソフトウェア分野)の問題を解いてみます。
---------------------------------------------------------------------------
(1)異なる数値をランダムに保存した配列 A[i](i=1, 2, ..., n)と、次のアルゴリズムαがある。
〔アルゴリズムα〕
手順1: iを1からn-1までずつ増加させながら手順2を繰り返す
手順2: jをnからi+1まで1ずつ減少させながら手順3を繰り返す
手順3: A[j]>A[j-1]ならば、A[j]とA[j-1]の値を交換する
次の(ア)~(ウ)に答えよ。
(ア)配列Aに対して、アルゴリズムαを適用したとき、配列に保存されている値はどのようになるか。
(イ)配列Bの要素を5,6,8,1,4,2,7,9,3とする。Bにアルゴリズムαを適用したとき、配列に保存される値の並びを示せ。
(ウ)リスト構造を、配列を使って実現する場合とポインタで実現する場合の特徴について、100字以内で説明せよ。
---------------------------------------------------------------------------
隣り合う配列の要素同士の大小を比較して、値を交換するのでパッと思いつくのは、昇順か降順かに並びますが、
文章を読んでてもよくわからないので、Excel VBAを使って検証してみました。
問題文では配列の要素は1からになっていますが、
VBAでは0スタートなので、そこは置き換えます。
Msgbox "A"に意味はありません。ブレークポイントを張って、
配列の中身がどうなるか確認したかっただけです。
結果、ウォッチウィンドウを見ると、〔9, 8, 7, 6・・・1〕と並んでいることがわかります。
したがって解答は以下のようになる思います。
(ア)配列Aに対して、アルゴリズムαを適用したとき、配列に保存されている値はどのようになるか。
→値は降順に並ぶ
(イ)配列Bの要素を5,6,8,1,4,2,7,9,3とする。Bにアルゴリズムαを適用したとき、配列に保存される値の並びを示せ。
→9,8,7,6,5,4,3,2,1
(ウ)リスト構造を、配列を使って実現する場合とポインタで実現する場合の特徴について、100字以内で説明せよ。
これはアルゴリズムαとは関係ない問題と思います。
→配列で実現する場合は、各データへのアクセスが容易であるが、データの追加や挿入に時間が掛かる。
リスト構造の場合は、データの追加や削除が容易にできるが、特定のデータへのアクセスに時間が掛かる。
(90文字くらい)
参考)https://qiita.com/maimax/items/dcff7206b747bf726ad8
であってるのかな??
これで正解とすれば、それほどひねった問題ではない、という印象です。
