Javascript 此函数的时间复杂度是否为O(logn)?
我正在努力,以下是我提出的解决方案:Javascript 此函数的时间复杂度是否为O(logn)?,javascript,algorithm,time-complexity,Javascript,Algorithm,Time Complexity,我正在努力,以下是我提出的解决方案: var findKthLargest=函数(nums,k){ //var tmp=nums.slice(); var迭代=0; while(迭代
var findKthLargest=函数(nums,k){
//var tmp=nums.slice();
var迭代=0;
while(迭代max){
max=nums[i];
cut=i;
}
}
数量拼接(切割,1);
迭代++;
}
返回最大值;
};代码>有k
while()的while()循环迭代(我认为,对于(var j=0;jfor(var j=0;j
)
然后,第一次迭代执行n
for
循环的迭代,并且nums。拼接(剪切,1)
是O(n)
,因为它必须将所有数组元素从cut
移动到n
O(2n)
与O(n)
相同,因为在大O计算中忽略了常数因子
第二次迭代执行n-1
迭代。这也是O(n)
,因为我们忽略了big-O表示法中的常量调整。这同样适用于拼接
最后的结果是O(k*n)
,因为你有k
外循环的迭代,而内循环都是O(n)
。当k>=n
时,最坏的情况是O(n^2)
有k
while()
循环的迭代(我认为,更习惯地写为for(var j=0;j
)
然后,第一次迭代执行n
for循环的迭代,并且nums。拼接(剪切,1)
是O(n)
,因为它必须将所有数组元素从cut
移动到n
O(2n)
与O(n)
相同,因为在大O计算中忽略了常数因子
第二次迭代执行n-1
迭代。这也是O(n)
,因为我们忽略了big-O表示法中的常量调整。这同样适用于拼接
最后的结果是O(k*n)
,因为你有k
外循环的迭代,而内循环都是O(n)
。当k>=n
时,最坏的情况是O(n^2)
拼接()
操作是线性的(O(n))。出于其他原因,这绝对不是O(log(n))。啊,谢谢。所以应该是O(nlogn)你认为它的哪一部分是O(log(n))
?循环的也是O(n)
。整个过程是O(k*n*n)
那些实际上应该是O(n+(n-1)+(n-2)…
的.splice()
操作是线性的(O(n))。出于其他原因,这绝对不是O(log(n))。啊,谢谢。所以应该是O(nlogn)你认为它的哪一部分是O(log(n))
?
循环的也是O(n)
。整个过程是O(k*n*n)
那些实际上应该是O(n+(n-1)+(n-2)