JS【详解】时间复杂度

时间复杂度是从时间维度描述一段代码的复杂程度,由一段代码中执行频次最高的语句决定,用大O符号表述。

时间复杂度的分类

从低到高依次是:

  • 常数时间复杂度 O(1):无论问题规模如何变化,算法的运行时间都保持不变。

  • 线性时间复杂度 O(n):当输入规模n线性增加时,算法的运行时间呈现出线性增长趋势。

  • 对数时间复杂度 O(log n):当输入规模n呈指数增长时,算法的运行时间呈对数增长趋势。

  • 平方时间复杂度 O(n^2):当输入规模n线性增加时,算法的运行时间呈现出平方增长趋势。

  • 立方时间复杂度O(n^3):当输入规模n线性增加时,算法的运行时间呈现出立方增长趋势。

  • 指数时间复杂度 O(2^n):当问题规模成指数增长时,算法的运行时间将会急剧增加

O(1)

O(1) 不是说只执行1次,而是对常量级时间复杂度的一种表示法。一般情况下,只要算法里没有循环和递归,就算有上万行代码,时间复杂度也是O(1)

(function () {console.log("你好");
})();
// 时间复杂度还是 O(1)
(function () {console.log("你好");console.log("你好");
})();

O(n)

只有一层循环或者递归等,时间复杂度就是 O(n)

function test(n) {for (let i = 0; i < n; i++) {console.log(i);}
}

O(n^2)

嵌套循环的时间复杂度就是 O(n^2)

function test(n) {for (let i = 0; i < n; i++) {for (let j = 0; j < n; j++) {console.log(i, j);}}
}

多种复杂度并列在一起时,只取执行次数最高的语句,即取最高项

// 最终的时间复杂度以高的为准,是 O(n^2)
function test(n) {//   单循环的时间复杂度是 O(n)for (let i = 0; i < n; i++) {console.log(i);}//   嵌套循环的时间复杂度是 O(n^2)for (let i = 0; i < n; i++) {for (let j = 0; j < n; j++) {console.log(i, j);}}
}

O(logn)

二分法的时间复杂度是 O(logn),以下两种情况都是。

function test(n) {while (n > 1) {n = n / 2;console.log(n);}
}
function test(n) {for (let i = 1; i < n; i = i * 2) {console.log(i);}
}

O(nlogn)

二分嵌套一个单循环,即时间复杂度O(nlogn)

function test(n) {for (let i = 1; i < n; i = i * 2) {for (let j = 0; j < n; j++) {console.log(i, j);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

君耐策划有限公司员工信息管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;公告管理&#xff0c;薪资管理&#xff0c;员工考勤管理 员工账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;公告管理&#xff0…

vivo鄢楠:基于OceanBase 的降本增效实践

在3 月 20 日的2024 OceanBase 数据库城市行中&#xff0c;vivo的 体系与流程 IT 部 DBA 组总监鄢楠就“vivo 基于 OceanBase 的降本增效实践”进行了主题演讲。本文为该演讲的精彩回顾。 vivo 在1995年于中国东莞成立&#xff0c;作为一家全球领先的移动互联网智能终端公司&am…

【智能算法】吸引-排斥优化算法(AROA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;K Cymerys受到自然界中吸引-排斥现象启发&#xff0c;提出了吸引-排斥优化算法&#xff08;Attraction–Repulsion Optimization Algorithm, AROA&#xff09;。 2.算法…

Python—面向对象小解(5)

一、多任务介绍 1.1 进程与线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程&#xff0c;可以获取进程的资源 一个程序执行 先要创建进程分配资源&#xff0c;然后使用线程执行任务 默认情况下一个进程中有一个线程 1.2 多任务介绍 运行多个进程…

代码随想录算法训练营第四十五天| 1049. 最后一块石头的重量 II、494. 目标和、474.一和零

1049. 最后一块石头的重量 II 题目链接&#xff1a;1049. 最后一块石头的重量 II 文档讲解&#xff1a;代码随想录/最后一块石头的重量 II 视频讲解&#xff1a;视频讲解-最后一块石头的重量 II 状态&#xff1a;已完成&#xff08;1遍&#xff09; 解题过程 这几天属实是有…

深入解析CRM客户关系系统:技术架构与功能实现的融合创新

CRM客户关系管理系统&#xff08;Customer Relationship Management System&#xff09;是一种以客户为中心的信息系统&#xff0c;旨在帮助企业更好地管理和维护客户关系&#xff0c;提高客户满意度和忠诚度&#xff0c;从而提升企业的市场竞争力。以下是CRM客户关系管理系统的…

Python父子继承

下列代码输出是&#xff1a; python class Parent: def __init__(self)&#xff1a; self.value4 def get_value(self)&#xff1a; return self.value class Child(Parent): def get_value(self)&#xff1a; return self.value1…

Lua与Python:深度解析两者之间的核心差异

Lua与Python&#xff1a;深度解析两者之间的核心差异 在计算机编程的广袤领域中&#xff0c;Lua和Python作为两种具有独特特性和应用领域的语言&#xff0c;各自闪耀着独特的光芒。然而&#xff0c;尽管它们都是编程语言&#xff0c;但Lua和Python在多个方面存在着显著的差异。…

深度学习和计算机视觉中的backbone

在深度学习和计算机视觉中&#xff0c;“backbone” 是指深度神经网络的主要部分&#xff0c;通常用于特征提取。骨干网络通过卷积操作提取图像中的低级和高级特征&#xff0c;为后续的特定任务&#xff08;如分类、检测、分割等&#xff09;提供丰富的信息。这些骨干网络一般是…

电磁兼容整改时磁环怎么选型

电磁兼容整改时磁环怎么选型 磁环的选型错误磁环特性纳米微晶磁环磁环选型示例磁环选型 一条线缆两端都有设备&#xff0c;那磁环应该放在哪里&#xff1f; 我们怎么样来选择这个磁环&#xff0c;通过磁环的吸收作用&#xff0c;让辐射的强度和传导发射的这个强度衰减更大的那我…

OLED C语言编程:深度解析与实战应用

OLED C语言编程&#xff1a;深度解析与实战应用 OLED显示技术以其出色的显示效果和低功耗特性&#xff0c;在现代电子设备中得到了广泛应用。而C语言作为一种高效、灵活的编程语言&#xff0c;自然成为OLED编程的首选。本文将从四个方面、五个方面、六个方面和七个方面&#x…

Linux|虚拟机|Windows 11 家庭版的Hyper虚拟机服务开启

前言&#xff1a; Windows11的版本是比较多的&#xff0c;但有的时候笔记本预装的可能是家庭版&#xff0c;而家庭版的Windows通常是不支持虚拟机的&#xff0c;也就是说Hyper服务根本就看不到 Windows的程序和功能大体如下&#xff1a; &#x1f197;&#xff0c;那么如何开…

最近关于工作与学习的一点思考

文章目录 关于工作关于学习职业规划 关于工作 我2015年大学毕业&#xff0c;工作到现在&#xff0c;差不多九个年头了。最近换工作&#xff0c;有一些沉淀的想法&#xff0c;分享一下我是在淮南读的大学&#xff0c;毕业后就到合肥工作了&#xff0c;直到现在。回过头看&#…

一、初识Qt 之 Hello world

一、初识Qt 之 Hello world 提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 初识Qt 之 Hello world文章目录 一、Qt 简介二、Qt 获取安装三、Qt 初步使用四、Qt 之 Hello world1.新建一个项目 总结 一、Qt 简介 C &#xf…

数据库系统概论(超详解!!!)第十节 过程化SQL

1.Transact-SQL概述 SQL(Structure Query Language的简称&#xff0c;即结构化查询语言) 是被国际标准化组织(ISO)采纳的标准数据库语言&#xff0c;目前所有关系数据库管理系统都以SQL作为核心&#xff0c;在JAVA、VC、VB、Delphi等程序设计语言中也可使用SQL&#xff0c;它是…

重生之我想写后端

Vue Element Plus 简单的响应式侧边栏 利用onMounted&#xff0c;初次加载页面的时候&#xff0c;为页面注册一个监听器。 当 ‘resize’ 事件发生时&#xff0c; 触发函数。 此函数里监听窗口大小&#xff0c;当窗口小于 500px 时&#xff0c;改变 isCollpase boolean 值。 …

利用元宇宙NFG+IPO线上营销,打造新商业模型

随着互联网技术的飞速发展&#xff0c;商业模式和创新方式层出不穷。特别是在移动电商和区块链技术的双重推动下&#xff0c;市场格局正在经历一场深刻的变革。然而&#xff0c;随着竞争加剧和监管收紧&#xff0c;如何构建一个既能吸引用户又能保持系统稳定的商业模型&#xf…

Chapter 5 Current Mirrors and Biasing Techniques

Chapter 5 Current Mirrors and Biasing Techniques 这一章介绍电流镜 5.1 Basic Current Mirrors MOS工作在饱和区, 表现为一个电流源. 考虑电源变化, PVT波动, 我们会首先产生一路精准电流源, 再复制这路电流. 如何复制呢? 电流转电压再转电流就行了, 如下图所示 考虑到…

Kivy.uix.textinput

一个小小的输入框&#xff0c;纵上下数页文档已不能全不概括&#xff0c;当去源码慢慢寻找&#xff0c;才知道其中作用&#xff0c;才能运用灵活。 Text Input — Kivy 2.3.0 documentation # -*- encoding: utf-8 -*-Text Input .. versionadded:: 1.0.4.. image:: images/te…

windows安装nodeJs,以及常用操作

1. 官网(Node.js — Run JavaScript Everywhere (nodejs.org))下载想要安装的node版本 的安装包完成安装 2.环境变量设置&#xff1a; 系统变量&#xff1a; Path新增&#xff1a;D:\Program Files\nodejs (node安装目录) 3.设置淘宝源&#xff1a; npm config set registr…