質問(選択ソート)

受験生さん  
(No.1)
疑似言語プログラム
■I:N,I≧2,-1
| •Max←I
| ■J:I-1,J≧1,-1
| | ▲ A[Max]<A[J]
| | | ・Max←J
| | ▼
| ■
| ・Work←A[I]
| ・A[I]←A[Max]
| ・A[Max]←Work
|


トレース表
N=5としたとき
            りんご
I J Max [1] [2] [3] [4] [5]
実行前  5   4    2   1    3
5 空白1  3   4    2   1    5
4 空白2  3   1    2   4    5

質問
I=5のとき、Max1となる理由がわかりません。
I=5ならば、Max=5のままだと思っています。
J=4でA[Max]<A[J]は3<1で成り立たないためMax=5のままと考えています。
ご教授お願いします。

2021.11.21 15:56
受験生さん  
(No.2)
「•」は文字化けです。
正しくは、・Max←I
2021.11.21 16:05
chihiroさん 
FE プラチナマイスター
(No.3)
最低限どの年度の、どの回の、どの設問に対する質問なのかは明記してください。
それとも上記のプログラムに関する問題は出題されてはいないが、内容がよくわからなかったので質問したということですか?
2021.11.21 16:17
受験生さん  
(No.4)
この問題は試験には出題されていません。
内容がわからなかったので質問しました。
2021.11.21 16:46
chihiroさん 
FE プラチナマイスター
(No.5)
>この問題は試験には出題されていません。
であればそのことも明記してください。余計な手間がかかるので。
初期状態をA[]={5,4,2,1,3}とします。
I=5の処理を考えます。(このときMax←I=5)
・J:I-1=4,J≧1,-1の処理
A[Max]=A[5]=3<A[J]=A[4]=1は成り立たないので、Jを1減らします。(J←4-1=3)
A[Max]=A[5]=3<A[J]=A[3]=2は成り立たないので、Jを1減らします。(J←3-1=2)
A[Max]=A[5]=3<A[J]=A[2]=4は成り立つので、Max←J=2の処理をしてJを1減らします。
A[Max]=A[2]=4<A[J]=A[1]=5は成り立つので、Max←J=1の処理をしてJを1減らします。
J(=0)≧1が成り立たなくなったので、J:I-1=4,J≧1,-1の繰り返し処理を終了します。
Work←A[I]=A[5]=3
A[I]=A[5]←A[Max]=A[1]=5
A[Max]=A[1]←Work=3
となり、A[1]とA[5]が交換されます。(A[]={3,4,2,1,5})
I=5の処理が終了したので、Iを1減らして処理を繰り返します。
トレースの流れは以上になります。
2021.11.21 17:06
受験生さん  
(No.6)
納得しました。とてもわかりやすい解説ありがとうございました。
勉強頑張ります。
2021.11.21 17:33

返信投稿用フォーム

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

その他のスレッド


Pagetop