使用布尔值的参数

时间:2014-03-27 11:37:45

标签: java algorithm boolean

我很想知道何时应该使用布尔值。当布尔值应该是一个好东西时,有什么好的参数可以识别?例如,在Odd-Even排序算法中,布尔值使整个算法起作用。

long[] a = {7,5,8,2,4,1,9,3,5,6};
int nElems = 10;

public void oddEvenSort() {
    boolean sorted = false;
    while (!sorted) {
        sorted = true;
        for (int i = 0; i < nElems - 1; i += 2) {
            if (a[i] > a[i + 1]) {
                swap(i, i + 1);
                sorted = false;
            }
        }
        for (int j = 1; j < nElems - 1; j += 2) {
            if (a[j] > a[j + 1]) {
                swap(j, j + 1);
                sorted = false;
            }
        }
    }
}

但是确定应该/可以使用布尔值的时间点在哪里?与其他简单排序算法相比,您可以在其中递减或递增已排序值的索引,但此算法并没有这样做。我可以遵循哪些规则或指导线来更好地理解布尔值的用法吗?这并不仅限于此算法,这只是一个例子。

6 个答案:

答案 0 :(得分:2)

当变量有两种状态时应该使用它。在你的情况下,它很简单,算法可以被排序或不排序,因此使用布尔值是很好的。

此外,例如,在深度优先搜索中,可以访问或不访问节点。

另一个例子是在图表中,边缘可以从一个节点转到另一个节点,然后您需要跟踪是否处理了节点。布尔值是这种情况的完美匹配。

答案 1 :(得分:1)

问题有点宽泛;一般来说,当必须说明是否有某种情况时,应使用boolean;我希望我理解你的问题。

答案 2 :(得分:0)

最终,无论您放入while循环,for循环还是if - else条件,都会归结为布尔值。 while (i < 10)for (int i = 0; i < 10; i++)if (i == 10)boolean对于有条件的检查员来说几乎是不可或缺的。

答案 3 :(得分:0)

如果您具有永远不会包含除true或false之外的其他任何值的true / false值,则应使用布尔值。

汽车有轮子吗?是或否,布尔值。

一辆车有多少个轮子? 3或4:整数。

答案 4 :(得分:0)

我不会在这里使用布尔值,它似乎没有做你想要的。我假设您想要将奇数条目与其他奇数条目交换。

public void oddEvenSort() {
    while (true) {
        for (int i = 0; i < nElems - 2; i++) {
            if (a[i] > a[i + 2]) {
                swap(i, i + 2);
                continue;
            }
        }
        break;
    }
}

答案 5 :(得分:0)

在java中,所有条件都被评估为boolean值,因此即使您没有明确声明它,也使用boolean值。现在,当需要boolean变量时,取决于您使用它的内容。

在上面的排序算法中,它被用作标志,以查看是否需要进一步排序。您假设数组已排序,之后如果不是,则将其标记为false,并且您在2个值之间进行交换。

离开示例,如果您有一个过长的条件并且希望使代码更具可读性,那么使用boolean值有用的另一个地方。

有时你只是在变量只有两种可能的状态时使用它(比如开/关)而你不想为状态创建一个枚举或常量。