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; }