簡體   English   中英

數組的最小值

[英]smallest value of array

我正在嘗試編寫一個函數,該函數將返回數組的最小值。 到目前為止,我有這個,但是它返回的都是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 = newArray[0]

在循環中(假設您不想要答案的偽代碼):

if: newArray[pos] < minimum

        minimum = newArray[pos];

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

我會做這樣的事情:

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

這兩個示例都可以正常工作,但我建議先使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM