设有 6 个有序表A、B、C、D、E,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列.要求通过 5 次两两合并,将 5 个表最终合并成 1 个升序表,并在最坏情况下比较的总次数达到最小。请回答下列问题。
⑴ 给出完整的合并过程,并求出最坏情况下比较的总次数。
⑵ 根据你的合并过程,描述 N(N≥2) 个不等长升序表的合并策略,并说明理由。
⑴ 将 2 个...
用户登录可进行刷题及查看答案
⑴ 将 2 个长度分别为 m 和 n 的升序表合并成 1 个升序表,最坏情况下每次比较只有 1 个元素会被放进合并后的升序表中,最后只剩余一个元素时不需要比较,总比较次数为 m+n−1 。为了最坏情况下比较的总次数最小,采用最佳归并树,由于每次归并只有两个归并段,该最佳归并树等效于一棵哈夫曼树,合并过程如下:
最坏情况下比较的总次数为:
(10+35−1)+(40+45−1)+(50+60−1)+(85+110−1)+(195+200−1)=825
⑵ 根据构造哈夫曼树思想,每次将待合并升序表序列按照表长从小到大排序,选择两个表长最小的进行合并,合并结束后再将合并后的升序表放回待合并升序表序列中。重复以上过程直到只剩 1 个升序表。
登录后提交答案
暂无评论,来抢沙发