大 O 符号简介👀

2025-06-07

大 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]))
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,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
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,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)
}
Enter fullscreen mode Exit fullscreen mode

在下一个教程中,我们将学习对,希望您能学到一些东西。

编码愉快...

在 Twitter 上关注我

最初发表于reactgo.com

文章来源:https://dev.to/sait/intro-to-the-big-o--2522
PREV
JavaScript 测验第 2 部分
NEXT
Build and Deploy a Rest API Using Serverless, Express, and Nodejs What is Aws Lambda? How to Monitor and Track your Lamda Invocations?