王道数据结构第一章个人向笔记

server/2024/9/25 7:45:25/

文章目录

  • 1.1.0 导读
  • 1.1.1 绪论
  • 1.1.2 数据结构的三要素
    • 逻辑结构
    • 数据的运算
    • 物理结构(存储结构)
  • 1.2.1 算法的基本概念
  • 1.2.2 时间复杂度
  • 1.2.3 空间复杂度

1.1.0 导读

数据结构在学什么?

  • 如何用程序代码把显示世界的问题信息画
  • 如何用计算机高效地处理这些信息从而创造价值

1.1.1 绪论

  • 数据:是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料
  • 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理
  • 一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位
  • 数据对象是具有相同性质的数据元素的集合,是数据的一个子集
  • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合
    image

1.1.2 数据结构的三要素

image

逻辑结构

  1. 集合
    各个元素同属一个集合,别无其他关系
  2. 线性结构
    数据元素之间是一对一的关系,出了第一个元素,所有元素都有唯一的前驱,除了最后一个元素,所有元素都有唯一后继
  3. 树形结构
    数据元素之间是一对多的关系
  4. 图结构
    数据元素之间是多对多的关系

数据的运算

针对某种逻辑结构,结合实际需求,定义基本运算

物理结构(存储结构)

数据的物理结构(存储结构):如何用计算机表示数据元素的逻辑关系

image
数据类型是一个值的集合和定义在此集合上的一组操作的总称
抽象数据类型(ADT)是抽象数据组织及与之相关的操作

1.2.1 算法的基本概念

程序=数据结构+算法

  • 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作

算法的特性

  1. 有穷性:一个算法必须总在执行有穷步之后结束
  2. 确定性:算法中的每条指令必须有确切的含义。对于相同的输入只能得出相同的输出
  3. 可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
  4. 输入
  5. 输出

1.2.2 时间复杂度

事前预估算法时间开销 T ( n ) T(n) T(n)与问题规模n的关系
可以只考虑阶数高的部分
大O表示法:
大O表示同阶,同等数量级,当 n − > 无穷 n->无穷 n>无穷二者之比为常数
image
image
常对幂指阶

  • 结论1:顺序执行的代码只会影响常数项,可以忽略
  • 结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可
  • 结论3:如果有多层循环只需要考虑最深层循环即可

image

1.2.3 空间复杂度

算法原地工作–算法所需内存空间为常量
只需关注存储空间的大小和问题规模相关的变量
函数递归调用会带来内存开销
空间复杂度=递归调用的深度(一般来说,每层递归空间都是常数)
image


http://www.ppmy.cn/server/23329.html

相关文章

【Spring AI】05. 向量数据库

文章目录 向量数据库概述可用实现示例用法元数据过滤器Filter StringFilter.Expression 理解向量 向量数据库 向量数据库是一种在 AI 应用中发挥关键作用的特定类型的数据库。 在向量数据库中,查询与传统关系数据库不同。它们不执行精确匹配,而是执行相…

Gone框架介绍6 - 如何使用gone开发web服务

文章目录 1.安装gone辅助工具2.创建一个web项目并运行代码项目结构3.Router4.Controller5.Service 我在两年前实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能,自己觉得还挺好用的;之前一直没有时间写文…

nginx--安装

yum安装 官方包链接:nginx: Linux packages 官方yum源链接:nginx: Linux packages 配置yum源 [rootlocalhost ~]# yum install -y nginx [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gp…

fofa 是一个什么样的工具

FOFA (Fingerprint of Full Asset) 是一个基于网络的搜索引擎,主要用于信息安全领域,特别是在网络空间资产发现和安全漏洞研究方面。这个工具可以帮助安全研究人员和企业安全团队发现并分析互联网上的设备、服务器、网站和其他相关资产的公开信息。 FOF…

STM32-TIM的输入捕获功能

1.熟练掌握TIM的参数配置, 2.熟练掌握输入通道的参数配置。 3.深刻理解输入捕获的原理和应用范畴。 4.理解输入捕获的原理。 一 什么是输入捕获功能 定时器输入捕获功能( input capture )是利用定时器的精准计数特性,实现对于…

什么是面向对象?

谈到面向对象,我们不得不说到面向过程。因为面向对象就是从面向过程过渡而来的。 面向过程:就是将一个大的任务分成一条条小的步骤,这些步骤由一个个函数来完成。 而面向对象呢,更加注重这个任务中的参与者,需求里有…

区块链钱包开发——专业区块链开发

随着区块链技术的发展,钱包开发成为了一项至关重要的任务。本文将探讨区块链钱包开发的重要性,分析当前面临的挑战,并展望未来的发展趋势。 一、区块链钱包概述 区块链钱包是一种用于存储和管理数字货币的软件工具。它为用户提供了一个安全的…

【EMQX】使用websocket订阅EMQX数据

需求:某平台希望通过 websocket 来订阅 EMQX平台上的某些 Topic数据进行处理 1、EMQX 服务配置 前提是EMQX服务正常安装运行了,如果EMQX服务未安装的话,详见以下文章关于如何安装部署服务: 搭建自己的MQTT服务器、实现设备上云(W…