所以我有这个算法,我正在尝试确定算法分析问题的基本操作。
这是代码:
{{1}}
我目前的印象是这个算法的基本操作是函数内部循环中的两个if语句。 令我感到困惑的是,我不确定基本操作是否是布尔表达式本身,如果array [j]< array [i]并且如果array [j]等于array [i]。或者天气基本操作是当任一if语句为真时发生的代码执行。有人可以在算法分析方面给我一个可靠的解释,这个算法的基本操作是什么:)请非常感谢
答案 0 :(得分:1)
基本操作可能是:
if (x == y)
x = 10
y + 2
请注意,这不是一个详尽无遗的清单。另请注意,某些代码的最坏情况需要执行最大数量的基本操作;因此,在以下代码中,您将在最坏的情况下看到三个基本操作。
if (variable == true) {
int x = y + 2;
}
...这是因为我们真的只是编写了几个上面的列表项。我们必须执行第一个条件,无论是一个(一个基本操作),但在那之后,"最坏的情况"是variable = true
时,因为我们继续执行任务。当然,为了计算x
将通过赋值假设的非显而易见的值,我们必须执行另一个基本操作(y
和2之间的算术),这给我们总共三个基本操作
所以在你的情况下,在内循环中执行的基本操作是条件,给定其中一个条件的变量的递增(基本赋值),以及
中的两个条件加算术if(numsmaller < n && n <= (numsmaller + numequal)
线。
希望这有帮助。