⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffman.cpp

📁 用简单的实例对HUFFMAN编码进行说明,通俗易懂
💻 CPP
字号:
#include <iostream>
#include <string>
using namespace std;
void main()
{
	int a[8],b[8];
	int i, j, k, aa;
	string * code;
	int x;
	code = new string[8];
	for(i = 0 ; i < 8 ; i ++)
		code[i] = "";
	cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7];//输入8个概率值
	for(i = 0; i < 8; i ++)
		b[i] =i;
	for(j = 0; j < 7 ;j ++)
	{
		for(i=0;i<7-j;i++)
		{
			if(a[i] > a[i + 1])
			{
				aa       = a[i]     ;
				a[i]     = a[ i+ 1] ;
				a[i + 1] = aa       ;
				for(k = 0; k < 8; k++)
				{
					if(b[k] == i)
						b[k]=i+1;									
			        else if(b[k] == i + 1)
						b[k] = i ;
				}
			}
		}
		
	}
	
	for( i = 0 ; i < 7; i ++)
	{
		for(k = 0; k < 8; k ++)
		{
			if(b[k] == i )
				code[k] = "0" + code[k];
			else if(b[k] == i + 1)
				code[k] = "1" + code[k];
		}
		a[i + 1] += a[i];
		for(k = 0; k < 8; k ++)
		{
			if(b[k] == i)
				b[k] = i + 1;
		}
		for(j = i+1; j < 7 ;j ++)
		{
			if(a[j] > a[j + 1])
			{
				aa       = a[j]     ;
				a[j]     = a[j + 1] ;
				a[j + 1] = aa       ;
				for(k = 0; k < 8; k++)
				{
					if(b[k] == j)
						b[k]=j+1;									
			        else if(b[k] == j + 1)
						b[k] = j ;
				}
				
			}
			else
				break;
		}
		
	}
	for( i = 0 ; i < 8; i ++)
	{
		cout<<code[i]<<endl;//输出结果
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -