-
问题
给定字符集C和每个字符的频率f(xi),求关于C的一个最优前缀码。
构造最优前缀的贪心算法,即哈夫曼算法。 -
解析
-
设计
设集合C1存储所有元素,C2存储结果
while(集合C1中的元素不为一){
取出集合中的第一个数a
取出集合中的第二个数b
将数a、b放到集合C2中
设res为数a+b
将res放入到集合C1中
} -
分析
该算法的时间复杂度为O(nlogn) -
源码
https://github.com/FPhoenixtree/-/blob/main/%E7%AE%97%E6%B3%95%E5%88%86%E6%9E%90%E4%B8%8E%E8%AE%BE%E8%AE%A1%E7%AC%AC%E5%8D%81%E4%B8%80%E6%AC%A1%E4%BD%9C%E4%B8%9A.cpp