Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在不排序的情况下查找数组中的最小数?_Arrays_Algorithm_Sorting_C++11 - Fatal编程技术网

Arrays 如何在不排序的情况下查找数组中的最小数?

Arrays 如何在不排序的情况下查找数组中的最小数?,arrays,algorithm,sorting,c++11,Arrays,Algorithm,Sorting,C++11,我正在制作一个程序,在不排序的情况下查找数组中的最小数字。。输出总是0。请解释一下为什么 #include<stdio.h> #include<conio.h> void main() { int num[5] = {5, 2, 1, 6, 9}, i, j; int min = num[0]; for (i=0; i<5; i++) { if (min > num[i+1]) { min =

我正在制作一个程序,在不排序的情况下查找数组中的最小数字。。输出总是0。请解释一下为什么

#include<stdio.h>
#include<conio.h>

void main() {
    int num[5] = {5, 2, 1, 6, 9}, i, j;
    int min = num[0];

    for (i=0; i<5; i++) {
        if (min > num[i+1]) {
            min = num[i+1];
        }
    }
    printf("Smallest number is %d", min);

    getch();
}
#包括
#包括
void main(){
int num[5]={5,2,1,6,9},i,j;
int min=num[0];
对于(i=0;i num[i+1]){
min=num[i+1];
}
}
printf(“最小值为%d”,最小值);
getch();
}

i
4
时,您正在访问
num[5]
数组
num
范围之外的。无法保证
num[5]
会是什么,但大多数情况下,在分配新内存后,会出现成对的
0
。应该是

for (i=1; i<5; i++) {
    if (min > num[i]) {
        min = num[i];
    }
}
for(i=1;i num[i]){
min=num[i];
}
}

在此表达式中:
num[i+1]
您试图访问数组之外的元素-有效数组索引从零到数组长度减一(在本例中为
4
,但
4+1
不在数组中)

无论如何,您不应该硬编码数组长度,而是这样编写循环:

for (i = 1; i < num.length; i++) {
    if (num[i] < min) {
        min = num[i];
    }
}
for(i=1;i
这样,它将始终工作,而与数组的实际长度无关