Huffman 编码

  • a5_539450
    了解作者
  • 1.3MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-11 01:39
    上传日期
哈夫曼压缩算法,刚开始学习的可以下载下来参考参考,代码注释比较完整
HuffmanTree.zip
  • (堆的应用)HuffmanTree
  • Debug
  • (堆的应用)HuffmanTree.exe
    62.5KB
  • (堆的应用)HuffmanTree.ilk
    1.7MB
  • (堆的应用)HuffmanTree.pdb
    915KB
  • (堆的应用)HuffmanTree
  • Debug
  • vc90.pdb
    236KB
  • MinHeap.obj
    53.2KB
  • (堆的应用)HuffmanTree.exe.embed.manifest.res
    728B
  • vc90.idb
    451KB
  • (堆的应用)HuffmanTree.exe.embed.manifest
    663B
  • BuildLog.htm
    6.7KB
  • mt.dep
    67B
  • main.obj
    28.4KB
  • (堆的应用)HuffmanTree.exe.intermediate.manifest
    621B
  • HuffmanTree.obj
    138.4KB
  • HuffmanNode.h
    605B
  • (堆的应用)HuffmanTree.vcproj.B20.A01.user
    1.4KB
  • MinHeap.h
    725B
  • MinHeap.cpp
    2KB
  • HuffmanTree.h
    1018B
  • main.cpp
    279B
  • (堆的应用)HuffmanTree.vcproj
    4.2KB
  • HuffmanTree.cpp
    1.3KB
  • (堆的应用)HuffmanTree.vcproj.PC2012.Administrator.user
    1.4KB
  • (堆的应用)HuffmanTree.suo
    21.5KB
  • (堆的应用)HuffmanTree.ncb
    2.2MB
  • (堆的应用)HuffmanTree.sln
    953B
内容介绍
#include <iostream> using namespace std; #include "MinHeap.h" #include <assert.h rel='nofollow' onclick='return false;'> MinHeap::MinHeap(int sz) { heap = new HuffmanNode[sz]; assert(heap!=NULL); szCurrent = 0; } void MinHeap::CreateMinHeap(int arr[],int n) { this->heap = new HuffmanNode[DefaultSize]; assert(heap!=NULL); int i; for(i=0; i<n; i++) heap[i].SetData(arr[i]); szCurrent = n; int currentpos = (szCurrent-2)/2; //从最后一个顶点开始调整 while(currentpos >= 0) { SiftDown(currentpos,szCurrent-1); currentpos -- ; } } void MinHeap::SiftDown(int start,int m) { int i = start,j = i*2+1; HuffmanNode temp = heap[i]; while(j<=m) { if(j<m && heap[j].GetData() > heap[j+1].GetData()) //j记录比较小的子节点 j++; if(temp.GetData() <= heap[j].GetData()) //不调整 break; else { heap[i] = heap[j]; //子节点上移 i = j; j = 2*j+1; } } heap[i] = temp; } void MinHeap::SiftUp(int start,int m) { int j = start, //子节点位置 i = (start-1) / 2; //顶点位置 HuffmanNode temp = heap[j]; //记录子节点 while(j > 0) { if(temp.GetData() > heap[i].GetData()) //不调整 break; else { heap[j] = heap[i]; //顶点下滑 j = i; i = (i-1) / 2; } } heap[j] = temp; } void MinHeap::Print() { for(int i=0; i<szCurrent; i++) cout << heap[i].GetData() << " "; cout << endl; } bool MinHeap::Insert(HuffmanNode * e) { szCurrent++; if(szCurrent > DefaultSize) abort(); heap[szCurrent-1] = *e; SiftUp(szCurrent-1,0); //调整 return true; } HuffmanNode * MinHeap::GetMinNode() { if(szCurrent>0) { HuffmanNode * t; SwapNode(0,szCurrent-1); //此时heap[0].data是最小的,让它跟最后一个元素调换 szCurrent--; SiftDown(0,szCurrent-1); t = new HuffmanNode(); * t = heap[szCurrent]; cout << "GetMinNode()后得到的堆:"; Print(); return t; } return NULL; } bool MinHeap::SwapNode(int i,int j) { swap(heap[i],heap[j]); return true; }
评论
    相关推荐
    • 算法
      算法 算法
    • 程序员算法
      这是一个算法文档压缩包,其中包括《可能与不可能的边界》、《具体数学》、《算法的乐趣》、《啊哈!算法》。这些书很适合对算法感兴趣的朋友,书籍讲解算法非常有趣。注意,其中有些文档是试读版本。
    • 算法实验
      算法实验算法实验算法实验算法实验算法实验算法实验算法实验算法实验
    • SIFT 算法
      SIFT 算法SIFT 算法SIFT 算法SIFT 算法
    • RSA算法
      RSA算法是公钥加密算法中重要的算法之一,本算法即实现RSA的加解密过程。
    • 分词算法介分词算法
      算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语分词介绍分词算法 汉语...
    • unify算法
      unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法unify算法
    • 寻路算法
      寻路算法 寻路封装
    • dsp算法算法算法算法
      dsp各种算法
    • 大数据算法
      本书共分为10章,第1章概述大数据算法,第2章介绍时间亚线性算法,第3章介绍空间亚线性算法,第4章概述外存算法,第5章介绍大数据外存查找结构,第6章讲授外存图数据算法,第7章概述MapReduce算法,第8章通过一系列...