查找数组的最小值

finding minimum value of an array

本文关键字:最小值 数组 查找      更新时间:2023-10-16

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

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.255996 e+061

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];
   }
}

在进行比较时,<= size意味着您正在迭代1超过数组的末尾。它很可能会捡到一些非常大的垃圾价值,然后变成最小值。

使用for (int i = 1; i < size; ++i) { /* ... */ }得到你需要的