设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最小。 请回答下列问题: 给出完整的合并过程,并求出最坏

admin2015-12-30  15

问题 设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最小。
请回答下列问题:
给出完整的合并过程,并求出最坏情况下比较的总次数。

选项

答案对于长度分别为m,n的两个有序表的合并,最坏情况下是一直比较到两个表尾元素,比较次数为m+n-1次。故,最坏情况的比较次数依赖于表长,为了缩短总的比较次数,根据哈夫曼树(最佳归并树)思想的启发,可采用如图所示的合并顺序。 [*] 根据上图中的哈夫曼树,6个序列的合并过程为: 第1次合并:表A与表B合并,生成含有45个元素的表AB; 第2次合并:表AB与表C合并,生成含有85个元素的表ABC; 第3次合并:表D与表E合并,生成含有110个元素的表DE; 第4次合并:表ABC与表DE合并,生成含有195个元素的表ABCDE; 第5次合并:表ABCDE与表F合并,生成含有395个元素的最终表。 由上述分析可知,最坏情况下的比较次数为:第1次合并,最多比较次数=10+35-1=44;第2次合并,最多比较次数=45+40-1=84;第3次合并,最多比较次数=50+60-1=109;第4次合并,最多比较次数i=85+110-1=194;第5次合并,最多比较次数=195+200-1=394。 故,比较的总次数最多为:44+84+109+194+394=825。

解析
转载请注明原文地址:https://kaotiyun.com/show/GzRi777K
0

最新回复(0)