HOME»基本情報技術者試験掲示板»平成22年春期午後問8
投稿する
平成22年春期午後問8 [4136]
みむさん(No.1)
https://www.fe-siken.com/kakomon/22_haru/pm08.html
問2)に関する質問です。
一回目のMergeでlist1に格納された8とlist2に格納された2が副プログラムMergeによって
listに2,8と結合して格納されるのは、理解できるのですが、結合後はプログラムでいうと何行目に移るのわかりません。具体的に何行目に移り、3と2,8が結合できるのか教えていただけると幸いです。
問2)に関する質問です。
一回目のMergeでlist1に格納された8とlist2に格納された2が副プログラムMergeによって
listに2,8と結合して格納されるのは、理解できるのですが、結合後はプログラムでいうと何行目に移るのわかりません。具体的に何行目に移り、3と2,8が結合できるのか教えていただけると幸いです。
2022.04.19 23:31
chihiroさん(No.2)
★FE プラチナマイスター
この投稿は投稿者により削除されました。(2022.04.20 09:23)
2022.04.20 09:23
chihiroさん(No.3)
★FE プラチナマイスター
問題文でも説明がありますが、Sortはプログラム中でSortを呼び出しています(再帰呼出し)。呼び出したSortの処理が終わったときに1つ前のSortの処理に戻ります。以下、簡単に流れを書きます。
Sort(list=[3,8,2,7,5,1],6)
/* 途中の処理は省略 */
Sort(slist1=[3,8,2],3) (1)
/* Sort(slist1=[3,8,2],3)の処理 */
Sort(slist1=[3],1) /* 要素が1個だけなので何もしない */
Sort(slist2=[8,2],2) (2)
/* Sort(slist2=[8,2],2)の処理 */
Sort(slist1=[8],1) /* 要素が1個だけなので何もしない */
Sort(slist2=[2],1) /* 要素が1個だけなので何もしない */
Merge([8],1,[2],1,list) /* [8],[2]を併合して[2,8]に */
/* (2)の続きから */
Merge([3],1,[2,8],2,list) /* [3],[2,8]を併合して[2,3,8]に */
/* (1)の続きから */
Sort(slist2=[7,5,1],3)
/* 以降同様に処理するだけなので省略 */
/* 途中の処理は省略 */
Sort(slist1=[3,8,2],3) (1)
/* Sort(slist1=[3,8,2],3)の処理 */
Sort(slist1=[3],1) /* 要素が1個だけなので何もしない */
Sort(slist2=[8,2],2) (2)
/* Sort(slist2=[8,2],2)の処理 */
Sort(slist1=[8],1) /* 要素が1個だけなので何もしない */
Sort(slist2=[2],1) /* 要素が1個だけなので何もしない */
Merge([8],1,[2],1,list) /* [8],[2]を併合して[2,8]に */
/* (2)の続きから */
Merge([3],1,[2,8],2,list) /* [3],[2,8]を併合して[2,3,8]に */
/* (1)の続きから */
Sort(slist2=[7,5,1],3)
/* 以降同様に処理するだけなので省略 */
2022.04.20 09:23