简单的数组排序/检查+分而治之的版本

时间:2012-11-07 17:47:09

标签: c++ algorithm sorting

我想知道是否有人能用我的代码告诉我错误。我正在尝试制作一个搜索数组中元素的算法,如果元素“小于i”和“大于u”,则返回“true”。我不太明白为什么这似乎不起作用。它有时会返回true但似乎忽略了数组的第一个元素,而其他元素则没有那么多。

除此之外,我想尝试一下这种“分而治之”的版本,现在我理解了这背后的一些理论。使用'pivot'点并将数组划分为两个较小的问题,但不知道如何实现它,如果有人可以详细说明这些问题,我将非常感激。感谢。

#include <iostream>

using namespace std;

bool ArrayCheck(int length) {
    int A[] = { 5, 10, 20, 25, 50 };
    int i = 40;  //less Than
    int u = 15;  //Greater Than

    for (int Count = 0; Count < length; Count++) { //Counter
        if (A[Count] <= i && A[Count] >= u) { //Checker
            return true;
            break;
        } else {
            return false;
        }
    }
}

int main() {
    cout << ArrayCheck(5);
}

1 个答案:

答案 0 :(得分:3)

其他人应该在那里吗?看起来应该删除else { return false }行,您可以在整个循环后添加return false ...

应该是这样的:

for(...)
{
    if(condition)
    {
         return true;
    }
}
return false;