数组的最小值

smallest value of array

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

我正在尝试编写一个函数,该函数将返回数组的最小值。到目前为止,我有这个,但它只返回0。

我不知道它会如何返回0,因为我使用for循环来循环遍历数组。也许它并没有像我认为的那样在数组值之间循环。有人能详细阐述一下这段代码中的逻辑和谬误吗?

#include <iostream>
using namespace std;
int newArray[9] = {4,5,9,3,6,2,1,7,8};

int minArray()
{
    int index = 1;
    int minimum;
    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] > newArray[index])
        {
            minimum = newArray[index];
        }
        index++;
    }
    return minimum;
}

int main()    
{   
    cout << "original array:n ";
    for (int i = 0; i < 9; i++)
    {
        cout << newArray[i] << ", ";
    }
    cout << "minimum value of array: ";
    cout << minArray();
    return 0;
}

一个好主意可能是用数组中的一个元素初始化minimum。因此:

minimum = newArray[0]

在你的循环中(假设你不想要答案的伪代码):

if: newArray[pos] < minimum
        minimum = newArray[pos];

我会这样做:

#include <iostream>
int minArray(int a[], int size) {
    if (size <= 0) return 0; //
    int m = a[0];
    for (int i = 1; i < size; ++i) {
       if (a[i] < m) m = a[i];
    }
    return m;
}
int main() {
    int a[] = { 4, 3, 6, 2 };
    std::cout << minArray(a, 4);
    return 0;
}

您应该使用某个已知值或最大整数值初始化minimum

int minArray()
{
    int minimum = newArray[0];
    for (int i = 1; i < 9; i++)
    {
        if (minimum > newArray[i])
        {
            minimum = newArray[i];
        }
    }
    return minimum;
}

而且你处理index的问题是错误的(实际上你根本不需要它)。如何使用index代替minimum的示例:

int minArray()
{
    int index = 0;
    for (int i = 1; i < 9; i++)
    {
        if (newArray[index] > newArray[i])
        {
            index = i;
        }
    }
    return newArray[index];
}

这两个例子都应该很好用,但我建议先用。

minimum变量最初应分配给数组中的一个值,然后将数组中的每个元素与minimum进行比较。如果小于,则为minimum分配该值:

int minArray()
{
    int minimum = newArray[0];
    int index = 0;
    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] < minimum)
        {
            minimum = newArray[i];
        }
        index++;
    }
  return minimum;
}