24考研数据结构-——绪论2

news2024/10/7 14:25:17

目录

    • 1.4 算法的时间复杂度
      • 1.4.1 渐近时间复杂度
      • 1.4.2 常对幂指阶
      • 1.4.3 时间复杂度的计算
      • 1.4.4 最好与最坏时间复杂度
    • 1.5 算法的空间复杂度
      • 1.5.1 空间复杂度
      • 1.5.2 函数递归调用(未总结)
      • 1.5.3 存储地址
        • 1.5.3.1 内存高低地址与高低位
        • 1.5.3.2 用户程序虚拟地址空间分布

1.4 算法的时间复杂度

1.4.1 渐近时间复杂度

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作T(n)=O(n),它表示随问题规模n的增大而增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度。

大O表示“同阶”,同等数量级。即:当 n->∞时,二者之比为常数

1.4.2 常对幂指阶

在这里插入图片描述
表示图

在这里插入图片描述

1.4.3 时间复杂度的计算

  • 顺序执行的代码只会影响常数项,可以忽略
  • 挑选循环中的一个基本操作分析执行次数与n的关系即可
  • 对于多层嵌套循环,只需要关注最深层的循环(嵌套最深的,即将每个循环执行次数相乘)

1.4.4 最好与最坏时间复杂度

在这里插入图片描述

在这里插入图片描述

1.5 算法的空间复杂度

1.5.1 空间复杂度

  • 无论问题规模怎么变换,算法与运行所需的内存空间都是固定的常量,则空间复杂度为S(n) = O(1)
  • 在计算空间复杂度时,只需关注存储空间大小与问题规模相关的变量

在这里插入图片描述
在这里插入图片描述

1.5.2 函数递归调用(未总结)

参考链接: 函数调用栈

1.5.3 存储地址

1.5.3.1 内存高低地址与高低位

参考: 内存高地址与低地址、变量的高位和低位

在这里插入图片描述
在这里插入图片描述
大端法就是,数据的前部(对于int型就是数据的高位)存在低地址

1.5.3.2 用户程序虚拟地址空间分布

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Eg:分析代码中的常量、 变量所属的段
在这里插入图片描述
本地编译结果
在这里插入图片描述
结果分析:

  • i1是已经初始化的全局变量,故i存于数据段,且类型为int,四字节三十二位。
  • i2是未初始化的全局变量,未设置初始值故为0(BSS段全部置零),类型为int,且由于BSS段在数据段上方,故i2(407A20)地址大于i1(403010)。
  • i3是已经初始化的静态全局变量,所以i3存于数据段,类型为int,并且因为在i1之后声明,所以i3(403014)的地址高于i1(403010)的地址四个字节。
  • i4是在fun()里定义的局部变量,所以至于该函数的栈,且栈段位于最上方,所以i4的地址大于之前定义的i1 i2 i3。
  • i5同i4是位于fun()里定义的局部变量,所以i5同样位于栈段,由于栈段是向下延申的,所以i5(62FDDC)的地址小于i4(62FE00)的地址。
  • i6是在fun()里声明的静态局部变量,所以位于数据段,又因为是在i3之后声明在数据段里的所以i6(403018)地址比i3(403014)高四个字节。
  • Str1是在fun()里声明的局部指针变量char*,所以str1变量本身存放在栈段,但是变量中指向的字符串常量”ABCDE”地址,因此%P的形式打印出来的是str1(40400)所存储字符串的地址,所以打印出来的是一个位于数据段地址。又因为在i6(403018)之后声明,所以地址高于i6。
  • Str2是在fun()里声明的局部变量,所以位于栈段,且因为栈段向下延申,所以str2(62FDD0)的地址小于i5(62FDDC)的地址。
  • Pi是在fun()里声明的局部指针变量,并且为它分配了空间,指针本身位于栈段,但是它不同于str1,str1所指向的是位于数据段里的字符串”ABCDE”的地址。它指向malloc动态申请的地址空间,申请的空间位于堆段,所以%P打印出来的是位于堆段的地址,所以地址位于BSS段与栈段之间。

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

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

相关文章

【目标跟踪】1、基础知识

文章目录 一、卡尔曼滤波二、匈牙利匹配 一、卡尔曼滤波 什么是卡尔曼滤波?——状态估计器 卡尔曼滤波用于在包含不确定信息的系统中做出预测,对系统下一步要做什么进行推测,且会结合推测值和观测值来得到修正后的最优值卡尔曼滤波就是利用…

Hadoop——Hive运行环境搭建

Windows:10 JDK:1.8 Apache Hadoop:2.7.0 Apache Hive:2.1.1 Apache Hive src:1.2.2 MySQL:5.7 1、下载 Hadoop搭建 Apache Hive 2.1.1:https://archive.a…

基础 | 日志 | 体系介绍

INDEX 总览图上图的说明 总览图 上图的说明 日志体系的结构大约可以概括为 日志门面日志绑定层日志实现日志桥接层 slf4j 是 日志门面,所谓日志门面可以理解为日志总接口 slf4j-log4j、log4j-slf4j-impl 是 日志绑定层,日志绑定层的作用是将 日志门面…

嵌入式Linux开发常用命令以及工具总结

现在的Linux发行版诸如 Ubuntu、 CentOS、Fedora都具有图形界面环境,Linux 中的桌面环境(GNOME、Unity等)也是一个程序,它们是命令行的抽象,例如,当您通过单击“X”关闭窗口时,该操作会导致运行…

<C语言> 数据在内存中的存储

1.数据类型介绍 C语言中的基本内置类型如下: char //字符数据类型 short //短整型 int //整型 long //长整型 long long //更长的整型 float //单精度浮点数 double //双精度浮点数类型的意义: 1.使用这个类…

vue2如何将页面生成 pdf 导出 html2Canvas + jspdf

1.引入两个依赖 npm i html2canvas npm i jspdf 2.在utils文件夹下新建html2pdf.js文件 import html2canvas from html2canvas; import jsPDF from jspdf export const htmlToPDF async (htmlId, title "报表", bgColor "#fff") > { let pdfDom do…

Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

场景: java中我们可以利用 Pattern 注解对某个入参进行规则校验,但有些特殊参数在接口入口处不方便校验,需要在代码中校验 一、使用 Pattern 注解校验 Pattern(regexp "^[a-zA-Z0-9]$", message "xxx号限输入字母、…

个人博客系统(SSM版 前端+后端)

前言 在学习Servlet的时候,也写了一个博客系统,主要的就是使用servelet加Tomcat进行实现的,而这个项目 仅仅适合去学习Web项目开发的思想,并不满足当下企业使用框架的思想,进行学习过Spring,Spring Boot,Spring MVC以及MyBatis之后,我们就可以对之前的项目使用SSM框架的形式进行…

Elasticsearch API(二)

文章目录 前言一、Elasticsearch指标ES支持的搜索类型ES的能力ES的写入实时性ES不支持事务 二、Elasticsearch名词节点(Node)角色(Roles)索引(index)文档(document) 三、Elasticsear…

126.【Redis 二刷】

Redis 二刷 (一)、认识NoSQL 与 SQL1.NoSQL与SQL的区别 (二)、认识Redis1.Redis 特征2.Redis安装及启动的三种方式 (基于Window)(1).命令行配置文件 3.Redis 客户端(1).命令行客户端(2).Redis可视化客户端 4.Redis 数据结构(1).Redis 通用命令(2).String 类型(3).Redis 的Key层…

【C++】list 模拟笔记

文章目录 list定义结点类(list_node)为什么封装迭代器为类 ?库里面模板多参数的由来 ?为什么普通迭代器不能隐式类型转换成const迭代器?迭代器位置指向及其返回值和整体代码 list list 和前面学习的 string 和 vector …

SAP HANA数据库学习

Systems介绍: Catalog下面存HANA的 Schema。 Content下面建package来 放view 。 Provisioning可以建虚拟表 数据源啥的。 Security下面 是用户角色和权限。 一个calculation view里面的scenario场景下都有啥呢? 首先是semantics下面的节点&#xff0…

跨网段耦合器的作用

你是否曾经遇到过需要跨网段访问设备的问题?比如在工业自动化领域,PLC和数控设备的连接。这时候,远创智控YC8000-NAT就能帮你轻松解决。 1, 远创智控YC8000-NAT是一款功能强大的设备,它可以将LAN1口所连接PLC的IP地址和端口号&a…

MySQL多版本并发控制原理(MVCC)

在数据库系统中,事务是指由一系列数据库操作组成的一个完整的逻辑过程,事务的基本特性是ACID: A : Atomicity (原子性) C: Consistency (一致性) I: Isolation (隔离性) D: 持久性(Durability) 由于大部分数据库都是高…

听GPT 讲K8s源代码--pkg(五)

在 Kubernetes 中,kubelet 是运行在每个节点上的主要组件之一,它负责管理节点上的容器,并与 Kubernetes 控制平面交互以确保容器在集群中按照期望的方式运行。kubelet 的代码位于 Kubernetes 代码库的 pkg/kubelet 目录下。 pkg/kubelet 目录…

档案数字化扫描完成标准有哪些内容?

档案数字化扫描完成标准是指在进行数字化扫描即将纸质文档或图片等非数字化文件转化为数字格式的文件的过程中,要满足一系列严格的要求。 1.扫描速度快。由于档案数量庞大,数字化扫描需要快速高效地进行,因此需要采用高效的扫描设备和软件&am…

函数-嵌入式C语言

函数-嵌入式C语言 值传递 地址传递

基于C语言的科学计算器

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、产品概述 计算器: 它是一个拥有扁平化优雅用户界面的科学计算器,拥有科学计算与基础计算器功能,可以计算是是数学表达式:从一个简单的表达式,如…

postgresql源码学习(58)—— 删除or重命名WAL日志?这是一个问题

最近因为WAL日志重命名踩到大坑,一直很纠结WAL日志在什么情况下会被删除,什么情况下会被重命名,钻研一下这个部分。 一、 准备工作 1. 主要函数调用栈 首先无用WAL日志的清理发生检查点执行时,检查点执行核心函数为CreateCheckPo…

96、Kafka中Zookeeper的作用

Kafka中zk的作用 它是一个分布式协调框架。很好的将消息生产、消息存储、消息消费的过程结合在一起。在典型的Kafka集群中, Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到…