这个给定算法中的"basic operation"究竟是什么



所以我有这个算法,我正在尝试确定算法分析问题的基本操作。

这是代码:

median(int array[]){
int k = array.length();
int n = k/2;
for(int i = 0; i < k; i++){
int numsmaller = 0;
int numequal = 0;
for(int j = 0; j < k; k++){
if(array[j] < array[i]){
numsmaller++;
}else
if(array[j] == array[i]){
numequal++;
}
if(numsmaller < n && n <= (numsmaller + numequal){
return array[i]
}
}//inner loop
}//outter loop
}//end of function

我目前的印象是,该算法的基本操作是函数内部循环中的两个if语句。 让我感到困惑的是,我不确定基本操作是否是布尔表达式本身,每次迭代都会执行布尔表达式,检查数组[j]是否<数组[i]以及数组[j]是否等于数组[i]。或者天气>

基本操作可能是这样的:

  • 数组索引
  • 条件,即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)

线。

希望这有所帮助。

最新更新