【数据结构与算法】算法复杂度

一、什么是复杂度?

  • 程序执行时需要的计算量和内存空间,其中计算量是指时间复杂度,计算量大则需要时间久;内存空间是指空间复杂度和代码是否简洁无关,而是指计算机的cpu和内存计算复杂程度。 
  • 复杂度是数量级,不是具体的数字,是为了方便记忆和推广。比如,山川的高度、人的身高等,数量级是指一个相差不大的数量范围。
  • 一般针对某一个具体的算法,而非一个完整的系统

二、复杂度的表示 

  •  时间复杂度-程序执行时需要的计算量(CPU)

                用O表示复杂度

  1. O(1)一次就够,计算次数可数的数量级都称作O(1)级别的数量级 【如:object 取值/数学运算】
  2. O(logn)数量量的对数,该曲线表示logn函数的曲线,n是指横轴原始数据的输入量,随着n的变化,logn的曲线形势如图,logn的计算结果是纵轴,也就是计算量、时间复杂度、空间复杂度的结果。随着计算量的增长,曲线趋向于平缓,是个好的现象。【如:数组二分】
  3. O(n) 和传输的数量量一样,是一个分割线,输入量是多少,计算量就是多少。如输入量是5,计算量就是5,输入量是7,那么计算量就是7,较为符合常理。【如:数组的一维循环】
  4. O(n*logn)数据量*数据量的对数,计算量在增加时,曲线呈上走趋势,O(n)*O(logn) = O(nlogn)
  5. O(n^2)数据量的平方 当输入量为2时,计算量为4,输入量为3时,计算量为9,复杂度增速飞快。【如:数组的嵌套循环】

  • 空间复杂度 - 程序执行时需要的内存空间

        前端领域需要程序运行更快,重时间轻空间,因为运行在浏览器上,所以内存空间是共用的。常见的空间复杂度:

  1. O(1) 有限的、可数的空间(数量级)
  2. O(n) 和输入的数据量相同的空间(数量级):当定义一个数组时,数组的长度和空间有关系,长度是多少就需要占用多少空间

// 空间复杂度为O(1)
function fn(arr = []) {
    const a = arr[1]
    const b = arr[2]
}

// 空间复杂度为O(n)
function fn(arr = []) {
    const arr2 = []
    for (let i = 0; i < arr.length; i++){
        arr2[i] = arr[i]
    }
    return arr2
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

Java代码基础算法练习-求给定范围内所有数之和-2024.03.22

任务描述&#xff1a; 输入两个整数n和 m(0<n<m<20)&#xff0c;求此范围内所有数据之和。(包括n和m) 任务要求&#xff1a; 代码示例&#xff1a; package march0317_0331;import java.util.Scanner;/*** 计算两个整数之间&#xff08;包括这两个整数&#xff09;所…

设计数据库之内部模式:SQL基本操作

Chapter4&#xff1a;设计数据库之内部模式&#xff1a;SQL基本操作 笔记来源&#xff1a; 1.《漫画数据库》—科学出版社 2.SQL | DDL, DQL, DML, DCL and TCL Commands 设计数据库的步骤&#xff1a; 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而&…

Harbor高可用(nginx和keepalived)

Harbor高可用&#xff08;nginx和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;nginx和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…

postman下载汉化以及使用

【2023全网最牛教程】10分钟快速上手Postman&#xff08;建议收藏&#xff09;_macbook postman打开慢-CSDN博客 Postman 汉化教程&#xff08;小白&#xff09;配置的具体操作_postman怎么设置中文-CSDN博客 上面是两篇参考的博客 postman是一款支持http协议的接口调试与测试…

大模型时代,5个最顶级的向量数据库

介绍5个向量数据库。 大模型时代&#xff0c;向量数据库彻底的火了&#xff0c;今天我分享业内最频繁使用的向量数据库&#xff0c;更多实践经验&#xff0c;可以文末参加我们的技术落地的讨论&#xff0c;喜欢本文记得收藏、关注、点赞。 1 Chroma 使用ChromaDB构建LLM应用程…

地平线 西之绝境完整版下载

版本介绍 v1.0.37.0|容量122GB|官方简体中文|支持键盘.鼠标.手柄|赠多项修改器 与埃洛伊同行&#xff0c;在危险壮美的边疆之地揭开种种未知的神秘威胁。此完整版可完整享受广受好评的《地平线 西之绝境™》内容和额外内容&#xff0c;包括在主线游戏后展开的后续故事“炙炎海…

Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.第一步 需要一个数组数据 {"week": "全部","hOutName": null,"weekendPrice": null,"channel": "门市价","hOutId": 98,"cTime": "…

破解城市内涝难题:水文水动力模拟技术的智慧策略,复杂城市排水系统模型的建立

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。本次培训将聚焦于综合利用GIS及CAD等工具高效地进行大规模城市排水系统水力模型的建立&#xff0c;利用SWMM实现排水系统水力模拟。讲解…

Jmeter测试计划

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Docker之docker compose!!!!

一、概述 是 Docker 官方提供的一款开源工具&#xff0c;主要用于简化在单个主机上定义和运行多容器 Docker 应用的过程。它的核心作用是容器编排&#xff0c;使得开发者能够在一个统一的环境中以声明式的方式管理多容器应用的服务及其依赖关系。 也就是说Docker Compose是一个…

canvas跟随鼠标移动画带透明度的线

提示&#xff1a;canvas画线 文章目录 前言一、带透明度的线二、试错&#xff0c;只有lineTo的时候画&#xff0c;只有最后地方是透明度的三、试错&#xff0c;只存上一次的点&#xff0c;线会出现断裂的情况总结 前言 一、带透明度的线 test.html <!DOCTYPE html> &l…

Apipost智能Mock功能详解

在接口开发过程中&#xff0c;Mock功能可以帮助开发者快速测试和验证接口的正确性和稳定性&#xff0c;以便快速迭代和修复问题。Apipost推出智能Mock功能&#xff0c;可以在智能期望中填写一些触发条件&#xff0c;开启后&#xff0c;Apipost会根据已设置的触发条件&#xff0…

CMake简单使用02

有如下的目录结构 main.cpp func.h: func.cpp 外层的CMakeLists.txt #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.2)#本工程的名字&#xff0c;- OpenGL.sln project(OpenGL)#本工程支持的c版本 set(CMAKE_CXX_STANDARD 17)#搜索所有的.cpp&#xff0c;加…

【LeetCode】回溯

labuladong回溯 回溯算法秒杀所有排列-组合-子集问题 回溯 一个回溯问题&#xff0c;实际上就是遍历一棵决策树的过程&#xff0c;树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍&#xff0c;把叶子节点上的答案都收集起来&#xff0c;就能得到所有的合法答案。 站…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串

docker基础(八)之docker commit,docker tag,docker cp,docker diff

文章目录 概述docker commit语法OPTIONS说明&#xff1a;docker commit --help实例使用场景 docker tag语法示例使用场景为什么要这样做呢&#xff1f; docker cp语法OPTIONS说明&#xff1a;docker cp --help示例 docker diff语法示例使用场景&#xff1a; 概述 用于学习和记…

Java学习day1

打开命令提示符&#xff08;cmd&#xff09;窗口&#xff1a; 按下winR键&#xff0c;输入cmd 按回车或点击确定&#xff0c;打开cmd窗口 常用cmd命令 盘符名称冒号&#xff08;D:)&#xff1a;盘符切换&#xff0c;示例表示由C盘切换到D盘 dir&#xff1a;查看当前路径下的内…

第十节HarmonyOS 常用容器组件2-Counter

1、描述 计数器组件&#xff0c;提供相应的增加或者减少的计数操作。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 2、子组件 可以包含子组件。 3、接口 Counter() 从API version 9开始…

9.串口通信

串口基本认识 串行接口简称串口&#xff0c;也称串行通信接口或串行通讯接口&#xff08;通常指COM接口&#xff09;&#xff0c;是采用串行通信方 式的扩展接口。串行接口&#xff08;Serial Interface&#xff09;是指数据一位一位地顺序传送。其特点是通信线路简 单&#x…
最新文章