| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2582 人关注过本帖
标题:赫夫曼编码中的select函数的更简单的思想是什么
取消只看楼主 加入收藏
miaorunhua
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-6-8
收藏
 问题点数:0 回复次数:1 
赫夫曼编码中的select函数的更简单的思想是什么
void select(huffmantree ht, int n,int&s1,int&s2)
{

    int j;
    for(j=1;j<=n;j++)
      if(ht[j].parent==0)
     {
         s1=j;
         break;
     }
    for(j=j+1;j<=n;j++)
      if(ht[j].parent==0)
     {
         s2=j;
         break;
     }
    for(j=s1;j<=n;j++)
        if(ht[j].parent==0)
            if(ht[j].weight<ht[s1].weight) s1=j;
    if(s1==s2)
        for(j=s2+1;j<=n;j++)
             if(ht[j].parent==0)
             {
                  s2=j;
                  break;
             }

    
    for(j=1;j<=n;j++)
    
        if(ht[j].parent==0&&j!=s1)
            if(ht[j].weight<ht[s2].weight) s2=j;
    printf("s1=%d,s2=%d\n",s1,s2);
    
}
这个是我写的,但是我觉得太麻烦了,有没有更简单的写法?希望各位高手指点一下。我觉得主要是找几个数中最小的两个先找一个再找一个太麻烦了,但暂时又想不出其他的好的方法。

[[it] 本帖最后由 miaorunhua 于 2008-6-22 13:04 编辑 [/it]]
搜索更多相关主题的帖子: 赫夫曼 select parent 函数 int 
2008-06-22 13:00
miaorunhua
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-6-8
收藏
得分:0 
回复 2# missiyou 的帖子
呵呵,谢谢你啊,我想的是先找到最小的,再在剩下的里面找最小的,这两个就是整个里面最小的两个啊,不过我觉得这样有点麻烦啊,有没有可以一下子把两个都找出来的算法啊。
2008-07-03 23:42
快速回复:赫夫曼编码中的select函数的更简单的思想是什么
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021145 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved