【408 数据结构】第1章绪论

文章目录

  • 绪论
    • 考纲
    • DS 基本概念
      • 1. 基本概念
      • 2. 数据结构三要素
    • 算法(时/空间复杂度计算)
      • 1. 算法概念
      • 2. 算法效率的度量
        • 时间复杂度:
        • 空间复杂度:
    • 小结

在这里插入图片描述

绪论

考纲

计算时间复杂度和空间复杂度(重点难点
在这里插入图片描述

DS 基本概念

1. 基本概念

  • 数据:信息的载体。
  • 数据元素:数据的基本单位。
  • 数据项:构成数据的最小单位。一个数据元素有若干个数据项组成。
  • 数据对象:相同性质的数据元素的集合,是数据的子集
  • 数据类型:的集合和定义在集合上的操作的总称。
    • 原子类型
    • 结构类型
    • 抽象数据类型
  • 数据结构:存在特定关系数据元素的集合。
    三要素:逻辑结构、存储结构、数据的运算

抽象数据类型可以定义一个完整的数据结构

2. 数据结构三要素

逻辑结构:元素之间的逻辑关系,与存储无关,独立于计算机。

  • 线性结构:线性表、站和队列、串、数组
  • 非线性结构:集合、一般树、二叉树、有向图、无向图

存储结构:在计算机中的表示(映像),包括数据元素的表示和关系的表示。

  • 顺序存储:逻辑上相邻,物理位置也相邻。
    优缺点:随机存取,但只能使用相邻的一整块存储单元。
  • 链式存储:不要求逻辑上相邻物理上也相邻。
    优缺点:按顺序存取,不会出现碎片现象,存储指针占用存储空间。
  • 索引存储:建立索引表,每项称为索引项(占存储空间)
    优缺点:检索速度快,但占用额外内存,增删元素也要修改索引表,花费时间多。
  • 散列存储:Hash存储,根据元素关键字计算元素的存储地址。
    优缺点:增删查速度快,但如果散列函数不好,会出现冲突,而解决冲突会增加花销。

在这里插入图片描述

算法(时/空间复杂度计算)

1. 算法概念

算法:对问题求解步骤的描述。指令的有限序列,每条指令代表一个或多个操作。

五大特性:有穷性、确定性、可行性、输入、输出。

好算法目标:正确性、可读性、健壮性、高效率低存储量需求。

2. 算法效率的度量

算法效率度量通过时间复杂度空间复杂度来描述。

时间复杂度:

频度:语句被重复执行的次数。

T(n) : 所有语句的频度之和。n是算法问题规模

时间复杂度主要分析T(n)的数量级。

通常我们将算法中基本运算的执行次数的数量级作为该算法的时间复杂度。即T(n)=O(f(n))

一般我们考虑在最坏情况下的时间复杂度。

分析时间复杂性的两条规则:

  • 加法规则:T(n) = T1(n) + T2(n) = O( f(n)+g(n) )=O( max(f(n),g(n)) )
  • 乘法规则:T(n) = T1(n) * T2(n) = O( f(n)*g(n) )

常见渐进时间复杂度:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

不会算时间复杂度?推荐一个很好的博客喔,一学就会:http://t.csdnimg.cn/muccC
在这里插入图片描述

空间复杂度:

空间复杂度S(n) = O(g(n))

一个程序在进行操作时可能需要一些额外的辅助空间。

算法原地工作:算法所需辅助空间为常量,即O(1)

小结

本章要求掌握时间复杂度的求解,多做几个题。
啦啦啦学习408了,一边工作一边学习还真是累呢hhh
一起努力!!!
在这里插入图片描述

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

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

相关文章

如何使用AI来免费提升你的图片质量

学习如何使用AI免费放大您的图像&#xff0c;可以将那些恼人的低分辨率图像转变为高分辨率的杰作——至少在某种程度上是这样。虽然使用我们用于此任务的应用程序Upscayl需要稍微调整一下不同的模型&#xff0c;但您至少应该能够将图像转换成视觉上更令人愉悦的效果。 Upscayl…

Python教程(二十) : 十分钟入门【PyQt6】

文章目录 专栏列表环境准备1 安装 Python2 安装 PyQt6 创建 PyQt6 项目1 创建项目目录2 创建主 Python 文件 代码书写测试流程1 导入 PyQt6 模块2 创建主窗口类3 创建应用程序实例并运行 核心解析&#xff1a;PyQt6 中的模块示例代码&#xff1a; PyQt6 常用的控件1. QPushButt…

【Linux网络编程八】实现最简单Http服务器(基于Tcp套接字)

基于TCP套接字实现一个最简单的Http服务器 Ⅰ.Http请求和响应格式1.请求格式2.响应格式3.http中请求格式中细节字段4.http中响应格式中细节字段 Ⅱ.域名ip与URLⅢ.web根目录Ⅳ.Http服务器是如何工作的&#xff1f;一.获取请求二.分析请求2.1反序列化2.2解析url 三.构建响应3.1构…

java重点学习-mysql

2.1 如何定位慢查询? 1:介绍一下当时产生问题的场景(我们当时的一个接口测试的时候非常的慢&#xff0c;压测的结果大概5秒钟) 2.我们系统中当时采用了运维工具(Skywalking)&#xff0c;可以监测出哪个接口&#xff0c;最终因为是sql的问题 3.在mysql中开启了慢日志查询&#…

【LeetCode】14.最长公共前缀

题目要求 解题思路 这道题我们可以通过一列一列的比较是否相等来解决 代码实现 class Solution { public:string longestCommonPrefix(vector<string>& strs) {string ret;//以第一个字符串为标准for(int i0;i<strs[0].size();i){//保存第一个字符串的第i个位…

前端---对MVC MVP MVVM的理解

就需要从前端这些年的从无到有、从有到优的变迁过程讲一下。 1. Web1.0时代 在web1.0时代并没有前端的概念&#xff0c;开发一个web应用多数采用ASP.NET/Java/PHP编写&#xff0c;项目通常用多个aspx/jsp/php文件构成&#xff0c;每个文件中同时包含了HTML、CSS、JavaScript、…

微信小程序手写签名

微信小程序手写签名组件 该组件基于signature_pad封装&#xff0c;signature_pad本身是web端的插件&#xff0c;此处将插件代码修改为小程序端可用。 signature_pad.js /*!* Signature Pad v5.0.3 | https://github.com/szimek/signature_pad* (c) 2024 Szymon Nowak | Releas…

[数据集][目标检测]轮胎检测数据集VOC+YOLO格式4629张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4629 标注数量(xml文件个数)&#xff1a;4629 标注数量(txt文件个数)&#xff1a;4629 标注…

Spring扩展点系列-InstantiationAwareBeanPostProcessor

文章目录 简介测试一1、配置文件Bean注册2、单元测试方法3、测试类4、输出结果结论 测试二1、测试类2、输出结果结论 源码解析postProcessPropertiesCommonAnnotationBeanPostProcessorAnnotationInjectedBeanPostProcessor 总结 简介 spring容器中Bean的生命周期内所有可扩展…

【重构获得模式 Refactoring to Patterns】

重构获得模式 Refactoring to Patterns 面向对象设计模式是“好的面向对象设计”&#xff0c;所谓“好的面向对象设计”指的是那些可以满足“应对变化&#xff0c;提高复用”的设计。 现代软件设计的特征是“需求的频繁变化”。设计模式的要点是“寻找变化点&#xff0c;然后…

Kafka 实战演练:创建、配置与测试 Kafka全面教程

文章目录 1.配置文件2.消费者1.注解方式2.KafkaConsumer 3.依赖1.注解依赖2.KafkaConsumer依赖 本文档只是为了留档方便以后工作运维&#xff0c;或者给同事分享文档内容比较简陋命令也不是特别全&#xff0c;不适合小白观看&#xff0c;如有不懂可以私信&#xff0c;上班期间都…

5G前传-介绍

1. 引用 知识分享系列一&#xff1a;5G基础知识-CSDN博客 5G前传的最新进展-CSDN博客 灰光和彩光_通信行业5G招标系列点评之二&#xff1a;一文读懂5G前传-光纤、灰光、彩光、CWDM、LWDM、MWDM...-CSDN博客 术语&#xff1a; 英文缩写描述‌BBU&#xff1a;Building Baseba…

review——C++中的右值引用

目录 前言 一、什么是左值、什么是右值 二、右值引用 1.右值引用与右值引用的一些性质 2.解释一下左值引用与右值应用于程序员之间的关系 3.右值引用与移动语义 4.右值引用右值后变成左值的必要性与完美转发 1.右值引用引用右值后变为左值属性的必要性 2.完美转发 Ⅰ…

【docker】docker 镜像仓库的管理

Docker 仓库&#xff08; Docker Registry &#xff09; 是用于存储和分发 Docker 镜像的集中式存储库。 它就像是一个大型的镜像仓库&#xff0c;开发者可以将自己创建的 Docker 镜像推送到仓库中&#xff0c;也可以从仓库中拉取所需的镜像。 Docker 仓库可以分为公共仓…

Java获取小程序码示例(三种小程序码)

首先我们可以看到官方文档上是有三种码的 获取小程序码 这里特别要注意的是第一种和第三种是有数量限制的&#xff0c;所以大家生成的时候记得保存&#xff0c;也不要一直瞎生成 还有一点要注意的是第一种和第二种是太阳码 第三种是方形码 好了直接上代码 这里要注意&#xff…

Golang | Leetcode Golang题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; func isRectangleCover(rectangles [][]int) bool {type point struct{ x, y int }area, minX, minY, maxX, maxY : 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt : map[point]int{}for _, rect : range…

HTML生日蛋糕

目录 写在前面 完整代码 代码分析 系列文章 写在最后 写在前面 HTML实现的生日蛋糕来喽&#xff0c;小编亲测&#xff0c;发给好友可以直接打开哦。在代码的第183行可以写下对朋友的祝福&#xff0c;快拿去送给你的好朋友吧&#xff01; 完整代码 <!DOCTYPE html>…

C++ 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

C 上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

【LeetCode】15.三数之和

题目要求 解题思路 这道题我们可以使用暴力解法来解决&#xff0c;时间复杂度为O&#xff08;N^3&#xff09;。但是会超时&#xff0c;因此我们需要对暴力解法进行优化&#xff0c;而这道题我们使用双指针来进行优化&#xff0c;即依次固定一个数&#xff0c;在接下来的区间中…

vue3整合antv x6实现图编辑器快速入门

安装&#xff1a; npm install antv/x6 --save如果使用 umd 包&#xff0c;可以使用下面三个 CDN 中的任何一个&#xff0c;默认使用 X6 的最新版&#xff1a; https://unpkg.com/antv/x6/dist/index.jshttps://cdn.jsdelivr.net/npm/antv/x6/dist/index.jshttps://cdnjs.clo…