簡體   English   中英

如何讓二進制搜索方法返回false?

[英]How can I get the binary search method to return false?

我正在研究 C# 中的二進制搜索方法作為練習,如果數字在列表中,它返回 true,但如果數字不在列表中,我無法讓它返回 false。 我曾想過如果最后條件是 UB = LB,但 SearchKey 不等於 MP,則做其他事情。 有什么建議?

static bool search(List<int> numbers, int searchKey)
    {
        int UB = numbers.Count - 1;
        int LB = 0;
        int MP = (UB + LB) / 2;

        bool done = false;
        do
        {
            if (numbers[MP] > searchKey)
            {
                UB = MP - 1;
                MP = (UB + LB) / 2;
            }
            else if (numbers[MP] < searchKey)
            {
                LB = MP + 1;
                MP = (UB + LB) / 2;
            }
            else if (numbers[MP] == searchKey)
            {
                done = true;
                return true;
            }
            else
            {
                done = true;
                return false;
            }
        } while (!done);
        return false;
    }

在你的 while 循環中添加這個條件while (!done && LB < UB);

當沒有項目被搜索時,它運行無限時間

暫無
暫無

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

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