Algorithm 是否';分而治之';未排序数组的产量O(对数N)?

Algorithm 是否';分而治之';未排序数组的产量O(对数N)?,algorithm,recursion,divide-and-conquer,Algorithm,Recursion,Divide And Conquer,下面的算法找到max-QAZ。元素的QAZ是在该元素的索引之后具有较高值的元素数。常用的答案是使用O(nLog(n))进行除法和求解 数组未排序。在最坏的情况下,“分而治之”将触及所有n个元素。此外,“for loop”将更糟糕地接触n/2个元件。。它是怎样的n*log(n)。。不应该是O(n^2)。。谢谢 QAZ类: 定义初始值(self、min、qaz): self.min=min self.qaz=qaz def max_qaz(arr): n=长度(arr) def max_qaz_ut

下面的算法找到max-QAZ。元素的QAZ是在该元素的索引之后具有较高值的元素数。常用的答案是使用O(nLog(n))进行除法和求解

数组未排序。在最坏的情况下,“分而治之”将触及所有n个元素。此外,“for loop”将更糟糕地接触n/2个元件。。它是怎样的n*log(n)。。不应该是O(n^2)。。谢谢

QAZ类:
定义初始值(self、min、qaz):
self.min=min
self.qaz=qaz
def max_qaz(arr):
n=长度(arr)
def max_qaz_util(开始、结束):
如果end left.min:
left.qaz+=1
如果left.qaz>right.qaz或right,则返回left
结果=max_qaz_util(0,n-1)
打印(“minval”,result.min)
打印(“qaz”,result.qaz)
马克斯·卡兹([33,25,26,58,41,59])

参考-

是,在最坏的情况下,for循环会接触到
n/2
元素。这里重要的事实是,输入的划分尽可能均匀。算法对
n
元素所做的工作量是
O(T(n))
,其中递归
T

T(1) = O(1)
T(n) = 2 T(n/2) + O(n).

第二种情况适用,因此
T(n)=O(n log n)
。这与合并排序非常相似。

是的,for循环在最坏的情况下会接触到
n/2
元素。这里重要的事实是,输入的划分尽可能均匀。算法对
n
元素所做的工作量是
O(T(n))
,其中递归
T

T(1) = O(1)
T(n) = 2 T(n/2) + O(n).

第二种情况适用,因此
T(n)=O(n log n)
。这与合并排序非常相似。

为什么不给出原因就投反对票为什么不给出原因我看到了。。“for loop”的最坏情况是n/2,但该数字每次都会下降2。。。1*n/2。。2*n/4。。4*n/8。。。n*1。。。谢谢你,大卫。。“for loop”的最坏情况是n/2,但该数字每次都会下降2。。。1*n/2。。2*n/4。。4*n/8。。。n*1。。。谢谢大卫