Pen*_*One 16
您可以改为进行二分查找.编写执行以下操作的函数:
A = array和开始n = length(A).n>1
L = [A[0],A[1],...,A[k-1]]和R = [A[k],A[k+1],...,A[n-1]]在哪里k = floor(n/2)isEven(product of elements of L),然后设置A=L和n = k,A=R和n = n-k.isEven(A[0]),返回A[0],-1.运行一个for最多e迭代的循环.每次运行上面的算法找到偶数,如果输出-1停止,则没有更多要查找.否则,打印输出,将其从数组中删除,并在大多数e试验中迭代.
二进制搜索算法接受log(n)调用isEven,并且您必须在大多数e时间运行它,因此总共有e log(n)调用isEven.
因此,您希望每次都采用这种方法e log(n) < n,否则使用线性搜索,它接受n调用isEven.