簡體   English   中英

如何檢查陣列是否按升序排列?

[英]How do I check to see if my array is in ascending order?

因此,我有一個數組board [] [],其值不斷變化。 它是尺寸為d * d的正方形陣列。 我想檢查數組以查看其所有值是否都按升序排列。

for (int i = 0; i < d; i++)
{
    for (int j = 0; i < d; i++)
    {
        if (board[i][j] == (d * i) + j + 1)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

問題是,一旦數組board [0] [0] = 1中的第一個元素,它就返回true,並結束我的代碼。 我不知道如何實現它,以便在數組中的所有元素從1到(d * d-1)升序排列之前,它不會返回true。

謝謝!

如果我正確理解了您的問題,我認為您想這樣做:

int Previous = board[0][0];
for (int i = 0; i < d; i++)
{
    for (int j = 0; j < d; j++)
    {
        if (board[i][j] < Previous)
        {
            return false;
        }

        Previous = board[i][j];
    }
}
return true; // Only at the end do we know that all elements are in ascending order

您所遇到的問題是:

  1. 您將返回任一條件,而不是在檢查所有值之后返回
  2. 您的第二個for循環錯誤,並且引用了i,而不是j
  3. 您的比較是將board值與指標而不是其他board值進行比較

這應該工作

for (int i = 0; i < d; i++)
{
    for (int j = 0; j < d; j++)
    {
        if (board[i][j] != (d * i) + j + 1)
        {
           return false;
        }
    }
}
return true;

嘗試更換return truecontinue

for (int i = 0; i < d; i++)
{
    for (int j = 0; i < d; i++)
    {
        if (board[i][j] == (d * i) + j + 1)
        {
            continue;
        }
        else
        {
            return false;
        }
    }
}

如果您反轉條件,也可以完全刪除繼續子句:

        if (board[i][j] != (d * i) + j + 1)
        {
            return false;
        }

1)首先,您要通過升序來表示(垂直,水平還是對角線?)2)替換if語句if((board [i] [j]> board [i] [j + 1])||(board [ i] [j]>董事會[i + 1] [j]))

暫無
暫無

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

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