HOME»基本情報技術者試験掲示板»平成30年春期試験問題  午後問8
投稿する

平成30年春期試験問題  午後問8 [2249]

 ITビギナーさん(No.1) 
[プログラム 1 ]:makeHeapの引数data[]に図1と同じ数を 5,10,15,20,30,45,60の順で格納し、makeHeapを実行しても図2 heap[] 60,30,45,15,5,10,20にならず、60,20,45,5,15,10,30になってしまいます。
トレースがどこで間違えてるかわかりません。
  どなたか教えて頂けないでしょうか。宜しくお願いします。
2020.03.24 20:35
メタルさん(No.2) 
FE ブロンズマイスター
この二つの関数の処理を勘違いして左右逆に計算してませんか?
整数型:lchild(整数型: i )
整数型:rchild(整数型: i )

配列をヒープの関係で見てみると、左右逆に節や葉が出来てますので、取り違えに気をつけてやってみてください。
2020.03.24 20:56
メタルさん(No.3) 
FE ブロンズマイスター
ごめんなさい、勘違いです。
前の投稿は、無視して下さい。
2020.03.24 21:03
QMさん(No.4) 
FE ゴールドマイスター
ヒープの条件は満たしているので、合ってるんじゃないですか?
結果が違うのは、たぶん初期値の並びが違うからでしょう。
トレースはしてみてませんけど・・・
2020.03.24 21:18
 ITビギナーさん(No.5) 
QMさん、ありがとうございます。
親の値が左右の子の値より大きければ問題ないんですね。
2020.03.24 21:23
残念・・・さん(No.6) 
そうですね。根が最大で、親が左右の子よりデカきゃ大丈夫ですね。なんも問題なし。
その状態でheapSortを実行してもちゃんと昇順にソートできますね。
2020.03.24 23:05
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop