数据结构的时间复杂度和空间复杂度

        

目录

        

时间复杂度

        空间复杂度


时间复杂度

         基本操作的执行次数,为时间复杂度。

        我们使用大O的渐进表示法来表示时间复杂度。

        怎么使用?

        先看例子:

        

        在这个例子中, 基本操作为变量 count 的 加加 操作,并且,执行次数与 参数 N 有关,操作次数为 N^2+2*N +10 

        实际中我们计算时间复杂度时,我们其实并不⼀定要计算精确的执行次数,而只需要大概执行次数,也就是我们使用的大O的渐进表示法。

        所以现在我们应该怎么使用大O的渐进表示法表示呢?

        大O的渐进表示法:

        1.用 O(1) 表示固定的操作次数。

        2.在修改最后的运行次数的函数中,只保留最高次项,并且除去最高次项前面的系数,则为结果。

        

        显然,上面的示例代码就是第二种情况。表示成O(N^2)

        

        再来一个例子:

        

        这是一个二分查找的代码,代码结束可能有这几种情况:

        最好情况:运行一次找到。

        较好情况:运行一半次数找到。

        最坏情况:运行最后一次才找到。

        那么,在实际中我们⼀般情况关注的是最坏运行情况,这里的代码执行次数与元素个数有关,用 N 表示元素个数。则:

      

        由图分析得到:

        2^(循环次数 - 1)= N  -----> 循环次数 =  

        时间复杂度为也就是上图。 

         对数以2为底的情况下,可以简写成O(logN)

        

        空间复杂度

 空间复杂度是对代码在运行过程中临时占用存储空间大小的量度。

  空间复杂度也使用大O渐进表示法。

   例子1:

        

        使用了常数个额外空间,所以空间复杂度为O(1)

        

例子2:

        

        临时创建的空间大小与n有关,所以是动态开辟了n个空间,空间复杂度为O(n)

        

     例子3:

        

        这里每次递归都会调用函数add,调用就会开辟内存空间,调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)

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

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

相关文章

Ubuntu20.04 解决一段时间后键盘卡死 输入延迟很大的问题 ubuntu

Ubuntu20.04 解决一段时间后键盘卡死 输入延迟很大的问题 为了确保您能顺利通过双击快捷方式来重启 IBus,下面详细描述了从脚本创建到快捷方式设置的每一步,包括具体的命令行操作和必要的说明,以确保您能够按步骤成功执行。 步骤 1: 创建并…

解决Oracle DECODE函数字符串截断问题的深度剖析20241113

解决Oracle DECODE函数字符串截断问题的深度剖析 在使用Oracle数据库进行开发时,开发者可能会遇到一些令人困惑的问题。其中,在使用DECODE函数时,返回的字符串被截断就是一个典型的案例。本文将以学生管理系统为背景,深入探讨这个…

【Chapter 3】Machine Learning Classification Case_Prediction of diabetes-XGBoost

文章目录 1、XGBoost Algorithm2、Comparison of algorithm implementation between Python code and Sentosa_DSML community edition(1) Data reading and statistical analysis(2)Data preprocessing(3)Model Training and Evaluation(4)Model visualization 3、summarize 1…

Rust Struct 属性初始化

结构体是用户定义的数据类型,其中包含定义特定实例的字段。结构有助于实现更容易理解的抽象概念。本文介绍几种初始化结构体对象的方法,包括常规方法、Default特征、第三方包实现以及构建器模式。 Struct声明与初始化 struct Employee {id: i32,name: …

AI大模型微调:Qwen2大模型微调入门实战(完整代码)

简介: 该教程介绍了如何使用Qwen2,一个由阿里云通义实验室研发的开源大语言模型,进行指令微调以实现文本分类。微调是通过在(指令,输出)数据集上训练来改善LLMs理解人类指令的能力。教程中,使用…

树莓派(Raspberry Pi)Pico 2 C_C++开发环境配置(Docker+SDK)

树莓派(Raspberry Pi)Pico 2 C_C开发环境配置(DockerSDK) 开发环境容器系统环境配置配置 Raspberry Pi Pico 2 C/C 开发环境编译构建 Blink 示例程序下载 pico-sdk 和 pico-examples构建 Blink 链接 文章介绍了在容器中配置Raspbe…

剑指offer第二版(PDF+源码)

通过百度网盘分享的文件:剑指offer第二版(PDF源码).zip 链接:https://pan.baidu.com/s/11chsELiBIgjLR1mW7M8j1g?pwd1pq7 提取码:1pq7 《剑指Offer》第二版:开启求职编程之路的宝藏资源 在编程学习与求职准备的征程中&#xf…

Mac打开time machine(时间机器)备份特殊文件

Mac 打开time machine(时间机器)备份特殊文件 设置“时间机器”的作用具体操作办法 前言:今天在使用Nas同步文件时发现有部分重要文件没有同步,为了省事手动拖拽复制文件,导致其中一份非常重要的文件丢失,尝…

基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统

项目名称:基于PythonDjangoVue3MySQL实现的前后端分离商场车辆管理系统 技术栈 开发工具:PyCharm、Visual Studio Code (VSCode)运行环境:Python 3.10、MySQL 8.0、Node.js 18技术框架:Django 5、Vue 3.4、Ant-Design-Vue 4.12 …

vue2,vue3响应式的理解

vue2的话主要使用的是defineProperty对已有属性添加get,set,从而完成对数据的响应式控制,但每次需要for循环对属性进行遍历 function DefineReactive(target, key, value) {//存在多层嵌套的objectObserver(value);Object.defineReactive(target, key, {get() {retu…

SpringBoot 创建对象常见的几种方式

SpringBoot 创建对象常见的几种方式 在 Spring Boot 中,将 Bean 对象添加到 IOC 容器中,通用的有下面几种方式: 使用 Component、Service、Repository 或 Controller 注解使用 Configuration 和 Bean 注解使用 Import 注解导入其他配置类通…

游戏服务器和普通服务器的区别

服务器,顾名思义,是提供服务的设备,在计算机领域,服务器是指具有网络功能的高性能计算机,用于存储、处理和传输数据,而游戏服务器则是专门为游戏提供服务的服务器,它需要具备更高的性能、更稳定…

C++初阶:类和对象(上)

1. 类的定义 1.1 类的定义格式 class为定义类的关键字,Stack为类的名字,{ } 中为类的主体,注意类定义结束后的分号不能省略。类体中的内容为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或成员…

ctfshow DSBCTF web部分wp

ctfshow 单身杯 web部分wp web 签到好玩的PHP 源码&#xff1a; <?php error_reporting(0); highlight_file(__FILE__);class ctfshow {private $d ;private $s ;private $b ;private $ctf ;public function __destruct() {$this->d (string)$this->d;$this…

Git别名设置

在 Git 中设置命令别名可以让你更高效地使用常见的 Git 命令。通过为常用命令创建简短的别名&#xff0c;可以减少输入的字符数并加速工作流程。 参考链接 设置 Git 命令别名的方法&#xff1a; 使用 Git 配置命令&#xff1a; Git 允许通过 git config 命令来设置命令别名。这…

【分布式】万字图文解析——深入七大分布式事务解决方案

分布式事务 分布式事务是指跨多个独立服务或系统的事务管理&#xff0c;以确保这些服务中的数据变更要么全部成功&#xff0c;要么全部回滚&#xff0c;从而保证数据的一致性。在微服务架构和分布式系统中&#xff0c;由于业务逻辑往往会跨多个服务&#xff0c;传统的单体事务…

HarmonyOS开发 API 13发布首个Beta版本,部分已知的问题建议处理方案

HarmonyOS 5.0.1 Beta3&#xff0c;是HarmonyOS开发套件基于API 13正式发布的首个Beta版本。该版本在OS能力上主要增强了C API的相关能力&#xff0c;多个特性补充了C API供开发者使用。该版本对部分已知问题做了解决和优化&#xff0c;部分问题给出了解决方案和适配计划&#…

边缘计算在智能物流中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 边缘计算在智能物流中的应用 引言 边缘计算概述 定义与原理 发展历程 …

Spring Boot框架:电商开发的新趋势

5 系统实现 系统实现部分就是将系统分析&#xff0c;系统设计部分的内容通过编码进行功能实现&#xff0c;以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析&#xff0c;系统设计最主要还是进行功能&#xff0c;系统操作逻辑的设计&#xff0c;也包括…

本地源配置 以及ssh 和 nfs

安装软件的三种方式 apt 仓库 在/etc/apt/sources.list文件下 在线源 离线包 修改离线包 挂载并更新 ssh远程管理 sshd的配置文件 服务器命令行的远程登录方式 远程复制 先在第一台主机上创建文件 使用scp命令复制 sftp ssh的密钥登录 创建rsa密钥 将密钥文件传给另一台主机…