平成27年春期 午後問8  問題文は合ってますか?

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
とんてきちゃんさん  
(No.1)
平成27年春期 午後問8  の問1について、
https://www.fe-siken.com/kakomon/27_haru/pm08.html


aの答えは「Topに値1,Lastに値5」らしいのですが、
何度トレースしてもそのようになりません。
配列xの要素番号1~7の内容が
「3,5,6,4,7,2,1」
「3,5,1,4,2,7,6」
になった直後のTopとLastの値です。
まず7と2が入れ替わらないし、どうも問題文のプログラムが
本当に合ってるのかな?と疑問に思いました。
まず1と6を入れ替えるのは間違いないのですが、
そのあと
Top=1
Last=3(4-1)
になると思います。

皆様、この問題を、推測ではなくトレースで
正確に解けましたか?

2018.09.25 10:59
阿南市長さん 
(No.2)
この投稿は投稿者により削除されました。(2018.09.25 12:30)
2018.09.25 12:30
阿南市長さん 
(No.3)
  まず、最初の「1と6を入れ替え」たあとで、続きの計算をせずに■Trueのループを抜け出しているようなトレースをしているものと思われます。
  1と6を入れ替えた時点での i と j の数値をよく見れば
i = 3, j = 7 と、ループを抜ける条件である i >= j を満たしていないので、この時点では選択処理は終わりません。
そのまま続けると、i = 5 でx[i] < Pivot を満たさなくなり、j = 6 でPivot < x[j]を満たさなくなるので、ここで配列の5個目と6個目である 7 と 2 の入れ替えが起こります。そのあとで i をインクリメント、 j をデクリメントすることで、 i >= j を満たして、ここで選択処理が終了します。
最後に、i <= k を満たせば Topに j + 1 を代入し、j <= k を満たせば、 Last に i - 1 を代入します。
今回の場合だと、 (k = 3) <= (j = 5) を満たすので、Lastに (i = 6) - 1 を計算した 5 を代入して終了になります。
なので正解は ア:「Topに値1,Lastに値5」となります。
2018.09.25 12:48
とんてきちゃんさん  
(No.4)
この投稿は投稿者により削除されました。(2018.09.25 17:49)
2018.09.25 17:49
とんてきちゃんさん  
(No.5)
詳しい解説をありがとうございます。

やっと正確にトレースできました。どうやら僕は途中でPivotの値を1と勘違いしていたようです。最初の処理が終わるまでは6のままだったんですね。。。

すごく長時間悩んでいたので、非常に助かりました。本当にありがとうございます。
2018.09.25 17:51

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop