码迷,mamicode.com
首页 > 其他好文 > 详细

关于Huffman 算法中一次提取2个最小权重值的操作实现

时间:2014-09-15 01:03:38      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   ar   for   2014   div   

/*
 * =====================================================================================
 *
 *       Filename:  min_two_selector.cpp
 *
 *    Description:  
 *           找出整形数组中的两个最小值,并将其和重新放入该数组
 *
 *        Version:  1.0
 *        Created:  09/14/2014 10:44:19 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  RollStone (rs), jealdean@outlook.com
 *   Organization:  RollStone. Ltd. Co
 *      Last Change:  09/14/2014 10:44:19 PM
 *
 * =====================================================================================
 */
#include <stdio.h>

struct SA {
    int nSize;
    int retm, retm2;
    int select_min_two_values(int arr[]);
};

//为了方便查找而实现的插入排序
void InsertSort(int arr[], unsigned int n) {
    int i, j;
    int tmp;
    for (i = 1; i < n; i++) {
        tmp = arr[i];
        for (j = i; j > 0 && arr[j - 1] > tmp; j--) {
            arr[j] = arr[j - 1];
        }
        arr[j] = tmp;
    }
}

int SA::select_min_two_values(int *sa) {
    int i = 0;
    //sort
    InsertSort(sa, nSize);
    //find none-zero value index
    for (i = 0; i < nSize; i++) {
        if (0 != sa[i]) {
            break;
        }
    }
    //get two values
    retm = sa[i];
    retm2 = sa[i + 1];
    //replace the addition to array,and set the minimum one‘s value be zero
    if(i<nSize-2){//将置零操作控制到倒数第三个数字的位置上
        sa[i + 1] += sa[i];
    }else{
        sa[i+1]=0;
    }
    sa[i] = 0;

    return 0;
}

int main(int argc, char* argv[]) {
    SA asd;
    int arr[] = {5, 1, 1, 4, 4, 4, 3, 7, 5, 1};
    asd.nSize = sizeof (arr) / sizeof (arr[0]);
   
    for (int i = 0; arr[asd.nSize-2]!=0; i++) {
        asd.select_min_two_values(arr);
        printf("%d %d\n", asd.retm, asd.retm2);
    }

    return 0;
}

 

关于Huffman 算法中一次提取2个最小权重值的操作实现

标签:des   style   blog   color   io   ar   for   2014   div   

原文地址:http://www.cnblogs.com/jealdean/p/3972026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!