我为标准二进制搜索算法编写了这段递归代码。我只是想知道我什么时候在比较计数器上添加+1?下面的伪代码
Inputs A: Array of Data;
key:Data; L,R:Integer;
Variables m:Integer;
Returns m:Integer;
Begin
If R<L then return -1; fi
m:= (R+L)/2
if key = A[m] then return m; fi
if key > A[m] then
return binSearch(A,key,m+1,R);
Else
return binSearch(A,key,L,m-1);
fi
End
检查第一个if语句中的L和R是否算作比较?有点困惑。
答案 0 :(得分:3)
我相信当你说比较你并不严格意味着你有多少ifs,而是你试图获得二元搜索的O(log(n))复杂度?如果是这种情况,为什么不计算函数的开头,以便计算调用的数量
答案 1 :(得分:0)
在渐近分析中,条件语句被认为是O(1)。
因为条件问题是决策问题。 0或1。