我正在尝试从另一个频率数组

时间:2015-11-25 00:48:31

标签: c++ arrays

我正在尝试从数组中构建一个数组中的最小堆,其中索引对应于ASCII值,该索引处的值表示频率。

然后我使用这些find min函数来检索最小值

int findMinIndex(int *x){
    int a = findMaxValue(x);
    int i = 0;
    int index;
    for(i = 0;i < 128;i++){
        if(a > x[i] && x[i] != 0){
            a = x[i];
            index = i;
        }
    }
    return index;
}


int findMinValue(int *x){
int a = findMaxValue(x);
int i = 0;
for(i = 0;i < 128;i++){
    if(a > x[i] && x[i] != 0){
        a = x[i];
        x[i] = 0;
    }
}
return a;

}

在检索这两个值之后,我尝试将它们输入到堆对象数组中

class node{
public:
    int occurances;
    char val;
};

由于某种原因,当我这样做时,它似乎只是部分正确填充数组,然后重复填充其余的最大频率。

当我使用cout查看数组时我最终得到了这个

heap[1] = 1
heap[2] = 2
heap[3] = 6
heap[4] = 8
heap[0] = 36
heap[0] = 36
heap[0] = 36
heap[0] = 36

我无法弄清楚这意味着什么,或者为什么会这样。 那么如何才能将它修复到最终以数组形式出现的最小堆?

0 个答案:

没有答案