大 O 符号简介👀
什么是 Big O?
在计算机科学中,大O用于分析算法的运行时间或所用空间,它是由Paul Bachmann和Edmund Landau发明的。
让我们借助例子来讨论一些常见的时间复杂度。
恒定时间 O(1)
如果算法具有恒定的时间,则意味着它总是花费相同的时间来产生输出。
例子
function removeLastitem(arr){
return arr.pop()
}
console.log(removeLastitem([1,2,3,4,5,6]))
在上面的例子中,removeLastitem函数总是花费相同的时间来从数组中删除最后一个项目,无论数组有 10 个项目还是 20 个项目都没有关系。
线性时间 O(n)
如果算法具有线性时间,则意味着算法的运行时间随着输入大小的增加而增加。
例子
function sum(arr) {
let total = 0;
for (let i = 0; i < arr.length; i = i + 1) {
total += arr[i];
}
return total;
}
console.log(sum([1, 2, 3, 4])) //10
在上面的例子中,sum函数根据数组的大小增加其运行时间。
二次时间 O( n 2)
算法的运行时间与输入大小的平方成正比。
例子 :
function addAndLog(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length; j++) {
console.log(arr[i] + arr[j])
}//O(n)
console.log("----")
}// O(n)
}
在下一个教程中,我们将学习对数,希望您能学到一些东西。
编码愉快...
最初发表于reactgo.com
文章来源:https://dev.to/sait/intro-to-the-big-o--2522