Arrays 如何在不排序的情况下查找数组中的最小数?
我正在制作一个程序,在不排序的情况下查找数组中的最小数字。。输出总是0。请解释一下为什么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 =
#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
这样,它将始终工作,而与数组的实际长度无关