Advertisement

C++实现哈夫曼树(使用普通排序和堆结构)

阅读量:

第一种方法:排序

1.按照从小到大的顺序进行排列,
2.将前两个数值相加,并将结果赋给第二个位置,
3.再次进行排序(或优化为向后依次比较并赋值);
4. 循环执行步骤2和3.

复制代码
    const int maxn = 1001;
    
    int fruit[maxn], n;
    
    void create(int n)
    {
    	for (int i = 1; i <= n; i++)
    	{
    		cin >> fruit[i];
    	}
    }
    
    int main()
    {
    	int j, temp,sum=0;
    	cin >> n;
    	create(n);
    	sort(fruit, fruit + n+1);
    	for (int i = 2; i <= n; i++)
    	{
    		fruit[i] += fruit[i-1];
    		sum += fruit[i];
    		j = i;
    		temp = fruit[i];
    		while (fruit[j + 1] < temp && j + 1 <= n) {
    			fruit[j

全部评论 (0)

还没有任何评论哟~