返回最大值的索引

建议零售价

我写了以下内容来获取最大数字的索引值。

int TravellingSalesMan::getMaximum(double *arr){
    double temp = arr[0];
    int iterator = 0;
    for(int i = 0; i < 30; i++){
        if(arr[i] > temp){
            iterator = i;
        }
    }
    return iterator;
}

但是输出不断进入条件语句并不断打印出 29。我不知道为什么会发生这种情况

我也尝试使用 max_element() 但没有运气

编辑

上面的函数调用如下

static unsigned int chromosome = 30;
double value[chromosome]

for(int i = 0; i < chromosomes; i++){
    value[i] = estimateFitness(currPopultaion[i]);
}
int best = 0;
best = getMaximum(value);
cout<<best<<endl; // this just prints out 29
考希克NP

好吧,本来不打算写答案的,只是看到代码逻辑错误太多,评论区写不下去了!

  • 首先,你对变量名的使用iterator是非常错误的。它不用于对列表进行迭代。为什么要制造混乱。最好使用类似的max_index东西。

  • 为什么从i=0你的临时值是arr[0],所以没有用。再次检查第一个元素。从 i=1 开始!

  • temp在那个函数中毫无意义。最大索引最初应该是0,并设置为i如果有一些arr[i]大于arr[max_index]

  • 将长度单独传递给函数是更好的编码,因为它使代码更清晰。

  • 中的内容arr没有被修改,因此比抱歉更安全:制作指针const


重新编写代码,应该是:

int TravellingSalesMan::getMaximum(const double *arr,int len)
{
    int max_index = 0;
    for(int i = 1; i < len; i++)
    {
        if(arr[i] > arr[max_index])
            max_index = i;
    }
    return max_index;
}

值得注意的是,上面的代码中,leni, 和函数结果应该都是无符号整数类型。没有理由允许有符号整数索引,因此如果调用者通过硬指定unsigned或仅size_t作为索引变量类型这样做,则使其成为来自调用者的警告条件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回数组中最大值的索引

来自分类Dev

返回数组中最大值的索引

来自分类Dev

返回数组索引k处的整数最大值

来自分类Dev

如何返回范围内最大值的相应索引?

来自分类Dev

如何使用python从数组中返回最大值索引?

来自分类Dev

数组最大值的索引

来自分类Dev

列表最大值的索引

来自分类Dev

QueryDSL返回最大值

来自分类Dev

索引numpy矩阵的最大值

来自分类Dev

列表及其索引的最大值

来自分类Dev

多重数组最大值的索引

来自分类Dev

查找对应于最大值的索引

来自分类Dev

R:每行最大值对应的索引

来自分类Dev

返回表示每个组中最大值的索引的一系列数字位置

来自分类Dev

返回所有行具有最大值的列索引(反向一键编码)

来自分类Dev

具有索引/匹配公式的 Max 函数不返回最大值

来自分类Dev

使用 JavaScript 返回 3 维数组中最大值的索引

来自分类Dev

MYSQL返回每个组的最大值

来自分类Dev

MongoDB查找并全部返回最大值

来自分类Dev

从SQL选择中返回最大值

来自分类Dev

返回数组javascript的最大值

来自分类Dev

返回每组最大值的行

来自分类Dev

在javascript对象中返回最大值

来自分类Dev

返回所有组的最大值?

来自分类Dev

如何以最大值返回多行

来自分类Dev

Max()函数不返回最大值

来自分类Dev

Oracle SQL:仅返回最大值

来自分类Dev

如何返回最大值的对应日期

来自分类Dev

从多维数组 (ndarray) 返回最大值