福嶋本(アルゴリズム編)150頁の練習問題について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
どんちゃんさん  
(No.1)
所持している方いらっしゃったら教えてください。
ループの1回目で、なぜMAXが1になるのか教えてください。
MAXはIをはじめに設定しているので5かと思います。
しかし1と書いてあり、混乱しています。
2023.05.07 13:03
どんちゃんさん  
(No.2)
すみません、MAXにJが入るので4かと思います。
MAXに1が入るなら、MAX←JではなくMAX←A[J]なような?
おバカな質問ですみません。
2023.05.07 13:26
まきさん 
(No.3)
本には全部トレースしてないので分かり難いと思いますが
トレースしました。

1 2 3 4 5

N=5 5 4 2 1 3
5 4 2 1 3
5 4 2 1 3
5 4 2 1 3 ←成立
3 4 2 1 5

N=4 3 4 2 1 5
3 4 2 1 5 ←成立
3 1 2 4 5

N=3 3 1 2 4 5
3 1 2 4 5 ←成立
2 1 3 4 5

N=2 2 1 3 4 5 ←成立
1 2 3 4 5
2023.05.07 14:59
さんたさん 
(No.4)
配列の後ろから一番大きい数を探すアルゴリズムですね
多分1はループが終わった後のMaxを示しているのだと思います
2023.05.07 14:59
まきさん 
(No.5)
この投稿は投稿者により削除されました。(2023.05.07 15:09)
2023.05.07 15:09
まきさん 
(No.6)
A[MAX]=1
4番目の要素と考えても良いと思います
2023.05.07 15:11
まきさん 
(No.7)
これが分かれば選択ソートの基礎はOKです
2023.05.07 15:25
さんたさん 
(No.8)
MAXには最大値が直接入るのではなく最大値の配列番号が入ります
Iは配列の最大値が確定していない番号のうち一番後ろを指し、Jはそれより下の番号を網羅します
【以下プログラムの説明】
まずMAX=IでIが最大値の暫定1位としています
それからif文でA[J]とA[MAX]を次々に対決させ、その勝者の配列番号がMAXとなります
ここまで終えたら、A[I]とA[MAX]を入れ替えればA[I]はその配列の中の最大値である事が確定します
これをIが2になるまでやれば、残りの配列番号1には自動的に最小の数値が入ります
これで昇順のソートが出来上がります
2023.05.07 16:11
さんたさん 
(No.9)
1になるのは最初の最大値が配列番号1の5になるからですね
トレースするとこんな感じ
54213→I=5,max=1,A[max]=5
34215→I=4,max=2,A[max]=4
31245→I=3,max=1,A[max]=3
21345→I=2,max=1,A[max]=2
12345→終了
2023.05.07 16:34
どんちゃんさん  
(No.10)
まきさん、さんたさん、解説ありがとうございました。
自分の中で腹落ちしました。質問してよかった・・・
1回目の内ループをトレースしたらまきさんと同じ結果が導き出せました。
私が混乱していたのは、内側のループ1回目の表現が、表だとたった1行になっていて、変数MAXの値が合わなかったからです。。。149頁上側の表を作ろうとしていた(まきさんが書いてくれたもの)ので何がおきたかわからなくなり、これに1日とられてしまいました・・・(こういうところが駄目ですね)

▼自分のイメージがこうだった。まきさんのトレースと合致。
N=5
当初の配列の中身→ 54213
I=5,J=4,MAX=5  配列の中身→54213
I=5,J=3,MAX=5  配列の中身→54213
I=5,J=2,MAX=2  配列の中身→54213 ★成立
I=5,J=1,MAX=1  配列の中身→34215

▼テキストにあったのはこの1行(内ループの最終値が書かれていたのみ)
I=5,J=1,MAX=1  配列の中身→34215

以下をみてピンときました。。
まきさんの、
「(No.3)本には全部トレースしてないので分かり難いと思いますがトレースしました。」
さんたさんの、「(No.4) 多分1はループが終わった後のMaxを示しているのだと思います 」

すみません、気になる内ループ1回目のMAXの遷移はあってしますでしょうか?
2023.05.07 18:37
まきさん 
(No.11)
それで大丈夫です。
まあ、福嶋本もそういったとこまでやれとは思いますが(笑)私の感想ですが福嶋本はそういったとこは省いているのでイラッとします。(笑)
2023.05.07 19:11
どんちゃんさん  
(No.12)
>まきさん
ありがとうございます!!省くなら省くぜ!って本に一言あれば、私のような残念な人間が発生しないと思いますねwでも、省かれてる事実を知れてよかったですw実をいうとこれ昨日の夜から混乱していて2日溶かしましたw

福嶋本の同じセクションで、もう一つ、根本的な質問をしてもよいですか?
148頁のコードだと、ワークに値を退避する値の入れ替えの段落で、”内ループが終わった後に「回≠小」という条件”が付いています。しかし、150頁だとそれがありません。質問としては、150頁のワーク変数退避は、”条件なしに内ループが終わった後毎回行う”ってことなりますか?なぜ条件アリとなしの場合があるのでしょうか?MINを見つけるかMAXを見つけるかだけの違いと思いますが、この辺も??です。もしかすると、アルゴリズム脳ができている人はもうわかるんでしょうか??
2023.05.07 20:30
まきさん 
(No.13)
>どんちゃんさん
書いてないことないですが、P150の下から6行目を読めば・・・

P149の選択ソートは1~昇順に整列
P150の選択ソートは5~降順に整列する違いはわかりますか。
それと、最後の3行で入れ替わりが分かれば私はいいと思いますが

別の方が回答をくれるかもしれません。すみません
2023.05.07 22:32
どんちゃんさん  
(No.14)
>まきさん
書いてないことないですが、P150の下から6行目を読めば・・・
  →たしかに。。。5を格納したそばから変数が1になっていることに没入して混乱した自分、FE落ちる典型ですね(読んでいないか読んでも自分に刺さってない)

P149の選択ソートは1~昇順に整列
P150の選択ソートは5~降順に整列する違いはわかりますか。
>わかります。同じ結果が導き出されるが別のロジックで動いていることはトレースしてわかりました。
それと、最後の3行で入れ替わりが分かれば私はいいと思いますが
>その通りですね。。次のバブルソートに移ります。貴重なGWにお時間をいただきありがとうございました。
2023.05.07 23:06
まきさん 
(No.15)
順調ですか?
2023.05.13 18:09
どんちゃんさん  
(No.16)
187ページまで進んで、伸びたラーメン状態で布団で寝たきりです笑
というのは大袈裟ですが、へとへとですw
話しかけてくれて嬉しいです!!

多分6月末まで本がかかりそうですね。
ハッシュは覚えましたがチェイン法とオープンアドレス読み飛ばしました。ワイルドでしょう笑
頑張ってのぶながさんのように過去問やってやります笑 受けるのがだいぶ先になりそうです笑

186ページのゆりあ探して感じです。
まきさんはもうすぐ受けれそうですか?
2023.05.15 00:14
どんちゃんさん  
(No.17)
アルゴリズムの基本をたたき混んでいますが、福嶋本、軍隊並みにきついwww
最後までいったら過去問問8は少し軽く感じられるんでしょうかね?
頭がおかしくなりそうです!!
でもわからないまま科目B受けるわけにいかない笑
2023.05.15 00:21
まきさん 
(No.18)
私はプログラム練習サイトでjavaを組んで練習しています。パイザというサイトです。とかく大学時代に授業でやっていたけど忘れてしまい再度覚えなから、エラーと格闘してます。
今は昔ほどコンパイルも楽になったので良かったです。大学時代はコマンドプロントでPGをコンパイルさせて実行してました。試験対策にはなると思います
2023.05.15 07:43
どんちゃんさん  
(No.19)
paizaですね!覚えておきます!
2023.05.15 08:12
まきさん 
(No.20)
>どんちゃんさん
他の方も言ってましたが。ランクCくらいでいいそうです

[4840] 科目Bの勉強をどうしていいかわからなくなりました
7番の電タックさんの投稿参照してください
2023.05.15 20:26
どんちゃんさん  
(No.21)
ありがとうございます!!
2023.05.15 22:10

返信投稿用フォーム

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

その他のスレッド


Pagetop