香农,霍夫曼编码,MATLABp=[0.4,0.3,0.1,0.09,0.07,0.04]; p=fliplr(sort(p)); [m,n]=size(p); for i=1:n B(i,1)=p(i); end a=sum(B(:,1))/2; for k=1:n-1 if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a) break; end
这是一个使用C++来编写的香农码# include # include # include # include class T { public: T() {} ~T(); void Create(); void Coutpxj(); void Coutk(); void Coutz(); void Print(); protected: int n; double *p; double *pxj; int *k; double *mz; };