Algorithm 如何计算算法中的比较次数?

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

因为我完全是自学成才,所以我正在上面试准备课。我的导师想让我用一个算法来表示比较的次数,大概是用一个公式

他给我的例子是计数排序,所以它有三个循环;两个在同一范围内,一个嵌套。嵌套循环中还可能有三个比较

(a) 我知道在for循环中:

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
    比较

    此解决方案假设了以下几点:

    • 不需要对&&进行比较,这通常是正确的
    • 没有