Javascript 这个冒泡排序函数的时间复杂度是多少?

Javascript 这个冒泡排序函数的时间复杂度是多少?,javascript,time-complexity,big-o,bubble-sort,Javascript,Time Complexity,Big O,Bubble Sort,我写了这个冒泡排序函数,但我很难计算出它的时间复杂性 function bubbleSort(items) { for (var i = items.length; i > 0; i--) { for (var j = 0; j < i; j++) { if (items[j] > items[j + 1]) { var temp = items[j]; items[j] = items[j + 1

我写了这个冒泡排序函数,但我很难计算出它的时间复杂性

function bubbleSort(items) {  
    for (var i = items.length; i > 0; i--) {
      for (var j = 0; j < i; j++) {
        if (items[j] > items[j + 1]) {
          var temp = items[j];
          items[j] = items[j + 1];
          items[j + 1] = temp;
        }
      }
    }

    return items;
}
函数bubbleSort(项){
对于(var i=items.length;i>0;i--){
对于(var j=0;j项目[j+1]){
var temp=项目[j];
项目[j]=项目[j+1];
项目[j+1]=温度;
}
}
}
退货项目;
}
我知道外循环的时间复杂度为O(n)。但是,内部循环的时间复杂度是多少(因为它在每次传递时只经过一个
元素)?

内部循环是O(n)。开始时执行n次,结束时执行1次。平均而言,它将执行n/2次。常数因子不重要,所以这是O(n)

因此,总的运行时间是O(n2)。

内部循环是O(n)。开始时执行n次,结束时执行1次。平均而言,它将执行n/2次。常数因子不重要,所以这是O(n)


总的运行时是O(n2)。

如果你考虑运行多少次内循环,你可能会有更好的想法:

1st run : N times, 
2nd run: N-1 times 
... 
Nth run: 1 time.
如果你把它们全部加起来

N + (N-1) + (N-2) + ... + 1 = [N * (N+1)]/2

时代。这就是O(N^2)。有关更多信息,请在这里检查这个答案:

如果您考虑运行内部循环的次数,您可能会有更好的想法:

1st run : N times, 
2nd run: N-1 times 
... 
Nth run: 1 time.
如果你把它们全部加起来

N + (N-1) + (N-2) + ... + 1 = [N * (N+1)]/2

时代。这就是O(N^2)。有关更多信息,请检查此处的答案:

计算算法时间复杂度的一种方法是注意,内部循环执行
i
迭代,其中
i
的范围从
n
到1(其中
n
是输入的长度)。这意味着我们可以进行求和,以获得算法中的总步骤数:

n + (n-1) + ... + 3 + 2 + 1
此总和有一个熟悉的闭合公式:

n*(n+1) / 2

这个公式显然是
O(n^2)

计算算法时间复杂度的一种方法是注意内部循环执行
i
迭代,其中
i
的范围从
n
到1(其中
n
是输入的长度)。这意味着我们可以进行求和,以获得算法中的总步骤数:

n + (n-1) + ... + 3 + 2 + 1
此总和有一个熟悉的闭合公式:

n*(n+1) / 2

这个公式显然是
O(n^2)

google的“冒泡排序复杂性”,可以找到如下引用。或者搜索SO,结果显示375条。谷歌搜索“泡泡排序复杂性”,查找诸如。或者继续搜索,结果是375条,我不明白。如果那个问题/答案提供了“更多信息”,这不就是重复的问题吗?@torazaburo你说得对,因为我在移动应用程序中找不到“标记为重复”选项,我把答案的URL放在下面。顺便说一句,谢谢你的提醒。我不明白。如果那个问题/答案提供了“更多信息”,这不就是重复的问题吗?@torazaburo你说得对,因为我在移动应用程序中找不到“标记为重复”选项,我把答案的URL放在下面。谢谢你的提醒。