数据结构(绪论+算法的基本概念)

news2024/11/18 20:46:16

文章目录

  • 一、绪论
    • 1.1、数据结构的基本概念
    • 1.2、数据结构三要素
      • 1.2.1、逻辑结构
      • 1.2.2、数据的运算
      • 1.2.3、物理结构(存储结构)
      • 1.2.4、数据类型和抽象数据类型
  • 二、算法的基本概念
    • 2.1、算法的特性
    • 2.2、“好”算法的特质
      • 2.2.1、算法时间复杂度
      • 2.2.2、算法空间复杂度

一、绪论

1.1、数据结构的基本概念

数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

数据元素、数据项数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位
在这里插入图片描述
在这里插入图片描述
数据对象是具有相同性质的数据元素的集合,是数据的一个子集
数据结构是相互之间存在一种或多种特定关系的数据元素的集合

1.2、数据结构三要素

1.2.1、逻辑结构

集合: 各个元素同属于一个集合,别无其他关系

线性结构: 数据元素之间是一对一的关系。除了第一个元素,所有元素都有唯一前驱除了最后一个元素,所有元素都有唯一后继
在这里插入图片描述
树形结构: 数据元素之间是一对多的关系
在这里插入图片描述
图结构: 数据元素之间是多对多的关系
在这里插入图片描述

1.2.2、数据的运算

针对于某种逻辑结构,结合实际需求,定义基本运算
在这里插入图片描述

1.2.3、物理结构(存储结构)

线性结构:

顺序存储把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
在这里插入图片描述
链式存储。逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系。
在这里插入图片描述
索引存储。在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)
在这里插入图片描述
散列存储。根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储

  1. 若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的
  2. 数据的存储结构会影响存储空间分配的方便程度
  3. 数据的存储结构会影响对数据运算的速度

运算的定义是针对逻辑结构指出运算的功能的
运算的实现是针对存储结构的,指出运算的具体操作步骤。

1.2.4、数据类型和抽象数据类型

数据类型是一个值的集合和定义在此集合上的一组操作的总称。
1)原子类型。其值不可再分的数据类型。
2)结构类型。其值可以再分解为若干成分(分量)的数据类型。

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

抽象数据类型(Abstract Data Tvpe,ADT)是抽象数据组织及与之相关的操作。

二、算法的基本概念

2.1、算法的特性

程序=数据结构+算法
数据结构:如何用数据正确地描述现实世界的问题,并存入计算机
算法:如何高效的处理这些数据,以解决实际的问题

有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。

2.2、“好”算法的特质

  1. 正确性:算法应能够正确地解决求解问题。
  2. 可读性:应具有良好的可读性,以帮助人们理解。
  3. 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
  4. 高效率与低存储量需求
    时间复杂度和空间复杂度

2.2.1、算法时间复杂度

事前预估算法时间开销T(n)与问题规模n的关系(T表示“time”)
在这里插入图片描述
在这里插入图片描述
时间复杂度,可以只保留阶数更高的部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结论1:顺序执行的代码只会影响常数项,可以忽略
结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可
结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次
小练习
在这里插入图片描述
计算上述算法的时间复杂度T(n):
设最深层循环的语句频度(总共循环的次数)为x,则由循环条件可知,循环结束时刚好满足2x>n
x=log2n+1
T(n)=O(x)=O(log2n) 把O(1)舍去了

在这里插入图片描述

在这里插入图片描述

2.2.2、算法空间复杂度

在这里插入图片描述
空间(space)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
函数递归调用带来的内存开销
在这里插入图片描述
在这里插入图片描述
空间复杂度等于递归调用的深度

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

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

相关文章

一款强大的矢量图形设计软件:Adobe Illustrator 2023 (AI2023)软件介绍

Adobe Illustrator 2023 (AI2023) 是一款强大的矢量图形设计软件,为设计师提供了无限创意和畅行无阻的设计体验。AI2023具备丰富的功能和工具,让用户可以轻松创建精美的矢量图形、插图、徽标和其他设计作品。 AI2023在界面和用户体验方面进行了全面升级…

【GTK】GtkApplicationWindow/GtkApplication

一、GtkApplicationWindow 在GTK(GIMP Toolkit)应用程序开发中,并不是每个GTK程序都必须有一个GtkApplicationWindow,但大多数基于GTK的图形界面应用程序都会使用GtkApplicationWindow,因为它是一个方便的类&#xff…

幻兽帕鲁搭建私服,一键更新方法

看着帕鲁这么火,估计更新会变为常态了,如果有自己搭建私服的话,跟着我下面的方法去进行更新吧! 如果你还没有自己的私服,快去三五十搞一个吧,只需三五分钟,叫上你的小伙伴一起去搞起来吧 只需3分…

EXCEL VBA抓取网页JSON数据并解析

EXCEL VBA抓取网页JSON数据并解析 链接地址: https://api.api68.com/CQShiCai/getBaseCQShiCaiList.do?lotCode10036&date2024-01-26 Sub test() On Error Resume Next Sheet.Select Sheet1.Cells.ClearContents [a1:g1] Split("preDrawIssue|preDrawTi…

呼叫中心语音质检解决方案-苏州磐石云

呼叫中心语音质检解决方案是一种利用自动语音识别(ASR)和自然语言处理(NLP)技术来分析和评估呼叫录音的工具。它可以帮助呼叫中心监控和改进客户服务质量,提供以下功能和特点: 语音转文本:利用A…

dd 命令创建10G大小的文件

您可以使用Linux命令行工具dd来创建10GB大小的文件。以下是创建10GB文件的命令:dd if/dev/zero offile.img bs1G count10 在上述命令中,if参数指定输入文件为/dev/zero,这是一个特殊的文件,读取它会返回空字符(即零&am…

通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别

1)通过CanvasRenderer.SetColor和Image.color修改UI组件颜色的区别 2)OPPO相关机型没法在Unity启用90或120FPS 3)手机输入法中的emoji 4)Unity Application Patching怎么用 这是第369篇UWA技术知识分享的推送,精选了UW…

Linux常见指令汇总

目录 pwd√ ls√ cd√ 对文件的理解√ which√ alias√ touch√ linux系统目录结构√ mkdir / tree √ rmdir / rm √ man√ nano√ cp√ mv√ cat√ echo√ linux设计理念和三种重定向总结√ more/less√ head/tail√ wc√ uniq√ date / cal√ find√…

Qt Design Studio+Pyside项目

Qt Design Studio设计出的项目结构有多个层级的目录,我们直接用类似Qt Creator工具的方式加载main.qml文件时会报错提示module "content" is not installed,将content加入importPath后还是报同样的错误。 Qt Design Studio生成的文件包含了.qm…

传统图像处理算法的缺点是什么?

问题描述:传统图像处理算法的缺点是什么? 问题解答: 传统图像处理方法是基于一组参数,这些参数是在特定条件下对获取到的图像进行手动调整的。这些条件的任何变化,例如照明,都可能影响这些方法的可检测效…

element+vue 之 v-limit 按钮操作权限

1.新建一个permission.js文件 import store from /storeexport default {inserted: function (el, binding) {const { perms: limits } store.state.userconst { value: params } bindingif (!limits.length) returnif (params && Array.isArray(params)) {if (!limi…

three.js 鼠标选中模型弹出标签

效果&#xff1a;请关注抖音 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red;position: relative;"></div><…

前端工程化之:CSS工程化+Less

一、什么是Less&#xff1f; Less官网 Less中文网 Less 是一种更加简洁的样式代码&#xff0c;它非常像 CSS &#xff0c;但又不太一样&#xff0c;它让编写样式变得更容易。 Less 代码虽好&#xff0c;但它无法被浏览器识别&#xff0c;因此需要一个工具将其转换为纯正的 CS…

软件包管理:在CentOS 7中部署Tengine

目录 下载&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 部署&#xff1a; 实验操作 下载&#xff1a; 方法一&#xff1a; 1、打开浏览器搜索tengine并点击官网 2、选择需要安装的版本并复制链接链接 标题栏处可以更改为中文界面 下滑选择版本单击下载 在远程连…

第四篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:TabBar和Navbar实现页面切换

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例短博文系列 短博文目录一、前言二、给Index.ets添加TabBar组件三、用TabBar组件实现页面切换四、给Index.ets添加Navbar组件五、使用Navbar独立实现页面切换六、Navbar和TabBar同时在Index.ets主页实现各自独立的页面…

taskflow 源码阅读笔记-1

之前写了一篇介绍Taskflow的短文&#xff1a;传送门 Taskflow做那种有前后依赖关系的任务管理还是不错的&#xff0c;而且他的源码里运用了大量C17的写法&#xff0c;觉得还是非常值得学习的&#xff0c;因此决定看一下他的源码&#xff0c;这里顺便写了一篇代码学习笔记。 概…

【深度学习】sdxl中的 text_encoder text_encoder_2 区别

镜像问题是&#xff1a;https://editor.csdn.net/md/?articleId135867689 代码仓库&#xff1a; https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图&#xff1a; 为什么有两个CLIP编码器 text_encoder 和 text_encoder_2 &#xff1f; 在…

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…

运行时提示d3dx9_43.dll错误的解决办法,d3dx9_43.dll为什么会丢失

当你在运行某些程序或游戏时出现"找不到d3dx9_43.dll"的错误提示时&#xff0c;不要慌张&#xff01;这是一个常见的问题&#xff0c;但有多种有效的解决办法可以帮助你修复这个文件丢失的情况。今天就来教大家d3dx9_43.dll文件丢失的多种解决办法。 一、d3dx9_43.dl…

【微信小程序】怎样创建formdata对象,并通过 wx.request 发送file文件

一、场景 业务需求&#xff1a;微信小程序开发需要选择本地照片file连同一些表单数据&#xff0c;通过接口发送给服务器 问题&#xff1a; 因涉及到域名安全问题以及并不是单独上传图片&#xff0c;不能使用 wx.uploadFile 。 微信本身没有FormData对象&#xff0c;无法使用 n…