Algorithm 如何计算算法中的比较次数?
因为我完全是自学成才,所以我正在上面试准备课。我的导师想让我用一个算法来表示比较的次数,大概是用一个公式 他给我的例子是计数排序,所以它有三个循环;两个在同一范围内,一个嵌套。嵌套循环中还可能有三个比较 (a) 我知道在for循环中:Algorithm 如何计算算法中的比较次数?,algorithm,for-loop,if-statement,time-complexity,asymptotic-complexity,Algorithm,For Loop,If Statement,Time Complexity,Asymptotic Complexity,因为我完全是自学成才,所以我正在上面试准备课。我的导师想让我用一个算法来表示比较的次数,大概是用一个公式 他给我的例子是计数排序,所以它有三个循环;两个在同一范围内,一个嵌套。嵌套循环中还可能有三个比较 (a) 我知道在for循环中: for(var i = 0; i < n; i++) (变量i=0;i
for(var i = 0; i < n; i++)
(变量i=0;i
将进行n次比较。
使用嵌套循环:
for(var i = 0; i < n; i++){
for(var y = 0; y < n; y++){}
}
(变量i=0;i{
对于(var y=0;y
有n^2个比较
(b)
考虑两个if子句和三个潜在比较,它看起来如下:
for(var i = 0; i < n; i++){
for(var y = 0; y < n; y++){
if(array[y] < target_values){}
else if(array[y] == target_values && y <i ){}
}
}
(变量i=0;i{
对于(变量y=0;y
第一个循环:n(每个n
重复内部循环,您将i
与n
进行比较)
第二个循环:n^2
if条件:n^2
如果始终执行else子句(即所有元素>=目标值
):
- 数组[y]==目标值:n^2
如果else If first子句始终为真(即所有元素==目标值
):
- y
最坏情况下的4*n^2+n
总数。
在最佳情况下,所有元素都小于目标值
,并且您有2*n^2+n
比较
此解决方案假设了以下几点:
- 不需要对&&进行比较,这通常是正确的
- 没有