2016-12-15 106 views
-1

我可以在我的数组中找到最小值索引。我发现了很多关于它的指南,我也这样做,但我的回答不正确。查找数组中的最小元素索引

double minimum = main_array[0]; 
    int index_min; 

    for (int i=1; i<ARRAY_SIZE; i++) { 
     if (main_array[i] < minimum) 
      minimum = main_array[i]; 
      index_min = i; 
} 

我得到的答案是数组中最后一个元素的索引,而不是最低值的元素。

+1

'if(main_array [i] 'if(main_array [i]

+1

使用['std :: min_element'](http://en.cppreference.com/w/cpp/algorithm/min_element)?它会返回一个迭代器(对于数组来说它是一个指针),但是很容易从中得到一个索引。 –

+0

只需要用括号括住'index_min = i''if'语句;' –

回答

1

您需要正确包裹,如果条件当你更新index_min:

if (main_array[i] < minimum) { 
      minimum = main_array[i]; 
      index_min = i; 
    } 
+0

同意。重新填写答案语言。 – DhruvPathak

+0

Okey,谢谢我对此有疑问。为什么然后我可以找到最小值正确的语法错误? – Satnam

0

你忘了一些支架。正确的缩进将有助于看到这一点。目前您的代码如下所示:

for (int i=1; i<ARRAY_SIZE; i++) 
{ 
    if (main_array[i] < minimum) 
     minimum = main_array[i]; // sets the minimum correctly 
    index_min = i; // updates the index every run, resulting in index_min == ARRAY_SIZE -1 
} 

但你希望:

for (int i=1; i<ARRAY_SIZE; i++) 
{ 
    if (main_array[i] < minimum) 
    { 
     minimum = main_array[i]; 
     index_min = i; // only if a new minimum is found update the index_min variable 
    } // note the extra brackets ;-) 
} 

此外,在C和C++您通常使用EAC花括号一个额外的行。