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放在下面。谢谢你的提醒。