找到数组的最小值

时间:2013-04-16 01:16:11

标签: c++ arrays min

从我所学到的,我应该得到数组的最小值,但是我得到一个在我的数组中不存在的大的负数。

int size;
size = sizeof(array) / sizeof(array[0]);

int min;
min = array[0];

for(int i = 1; i <= size; i++) {
    if(array[i] < min){
        min = array[i];
    }
}

但出于某种原因,我得到了一个很大的负数:-9.25596e + 061

2 个答案:

答案 0 :(得分:6)

for(int i = 1; i <= size; i++) {
                //^^^^array index out of bound, since array index starts from 0
   if(array[i] < min){
      min = array[i];
   }
}

您应该只比较数组中的元素。您试图访问不属于该阵列的内存,因此您在该内存中有奇怪的值。

您的代码应如下所示:

int min = array[0];
for(int i = 1; i < size; i++) {
   if(array[i] < min){
      min = array[i];
   }
}

答案 1 :(得分:0)

进行比较时,<= size表示您在数组末尾迭代1。它最有可能获得一些非常巨大的垃圾价值,并且成为最低价值。

使用for (int i = 1; i < size; ++i) { /* ... */ }获取所需内容。