基本情報技術者過去問題 平成30年春期 午後問8
kikiさん
(No.1)
基本情報技術者過去問題 平成30年春期 午後問8の設問2のeの解説の
「3~5行目 初回の downHeap の開始時点でデータは 20 30 45 15 5 10 60 と並んでいて、n の初期値は 0 ですから、tmp には heap[0] の左の子の要素番号 1 が入ります。」
これの開始時点でデータは 20 30 45 15 5 10 60 と並んでいてとありますがこれはなぜこの並び方だとわかるのでしょうか?
「3~5行目 初回の downHeap の開始時点でデータは 20 30 45 15 5 10 60 と並んでいて、n の初期値は 0 ですから、tmp には heap[0] の左の子の要素番号 1 が入ります。」
これの開始時点でデータは 20 30 45 15 5 10 60 と並んでいてとありますがこれはなぜこの並び方だとわかるのでしょうか?
2021.09.25 02:00
サスティンペダルさん
(No.2)
実際にheapSortのプログラムを見てみると、
downHeapを呼び出す前にswapの処理を行っています。
swapは配列の入れ替えを行う副プログラムで、
ここでは配列heapの先頭と末尾の要素を入れ替えています。
なので、downHeapの開始時点で
20 30 45 15 5 10 60
↓
60 30 45 15 5 10 20
となることがわかります。
downHeapを呼び出す前にswapの処理を行っています。
>・swap(heap, 0, last)
>・downHeap(heap, last - 1)
swapは配列の入れ替えを行う副プログラムで、
ここでは配列heapの先頭と末尾の要素を入れ替えています。
なので、downHeapの開始時点で
20 30 45 15 5 10 60
↓
60 30 45 15 5 10 20
となることがわかります。
2021.09.28 13:33
サスティンペダルさん
(No.3)
↑逆でした。。
60 30 45 15 5 10 20
↓
20 30 45 15 5 10 60
となることがわかります。
60 30 45 15 5 10 20
↓
20 30 45 15 5 10 60
となることがわかります。
2021.09.28 13:39
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告