建立哈夫曼树过程中,找出parent=0并且weight最小的两个结点,如何确定最小两个weight所对应节点的下标

void SelectTwoMin(int upbound, HuffmanTree HT, int &s1, int &s2)

void SelectTwoMin(int upbound, HuffmanTree HT, int &s1, int &s2)
{
	int x1=0,x2=0;
    int m1= 1000;
    int m2= 1000;
    for(int i=1; i<=upbound; i++)
    {
        if(HT[i].parent == 0&& HT[i].weight < m1)//更新 
        {//因为s1的编号要比s2的小 所以当出现一个比当前最小的还要小的时候 
		//就要重新更新数据 因为s2为第二小 所以把原先最小的数给s2就完成了更新
		//然后把最新的最小的给s1 就使得s1为当前第一小 s2为当前第二小 
            m2= m1;//深度更新 
            x2 = x1;//位置更新 
            m1 = HT[i].weight;//重新赋值 
            x1 = i;//更新位置 
        }
        else if(HT[i].parent == 0 && HT[i].weight <m2)
        {//要是新出现的数比当前第二小的小但是比第一小要大时 只要更新s2即可 
            m2 = HT[i].weight;
            x2 = i;
        }
    }
    s1 = x1;
    s2 = x2;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称重复了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值