文件名称:代码c++ 最大堆最小堆
文件大小:28KB
文件格式:DOC
更新时间:2016-01-24 03:26:54
c++ 最大堆最小堆
最大堆最小堆 问题的提出 给定k个排好序的序列S1,S2…,Sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。 原理分析 这个程序比较适合用堆,最优用最小堆,最差用最大堆; 以最优合并为例: (1)使用各序列的长度建堆; (2)两个最小的元素出堆,计算这两序列合并需要的比较次数,该次数入堆; (3)重复(2),直到堆只剩下一个元素; 最后剩下的元素即为题目的解。