数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)

概念大合集01

  • 1、数据结构基础的定义
  • 2、数据结构
    • 2.1 数据元素之间关系的集合
    • 2.2数据结构的三要素
      • 2.2.1数据的逻辑结构
      • 2.2.2数据的存储(物理)结构
      • 2.2.3数据的运算
  • 3、数据类型
  • 4、抽象数据类型类型(ADT)
  • 5、算法及其描述
    • 5.1算法的5个特性
    • 5.2算法设计的目标
    • 5.3算法的时间复杂度
      • 5.3.1时间复杂度的求和、求积定理
    • 5.4算法的空间复杂度

阅读指导:
       本文内容丰富,涵盖广泛,读者朋友们可以根据目录指引,直接跳跃至您感兴趣的章节开始品读。此外,作者正在积极创作后续篇章,如果您对本篇文章有所喜爱,不妨点击关注,以便第一时间获取最新作品动态。
       现在,让我们开始正文的旅程吧。希望您能细细品味每一个字句,如果您在任何地方发现有任何不妥或欠缺之处,请在评论区不吝赐教。作者将虚心接受您的宝贵意见,并努力进行改进。期待您的宝贵反馈!
下一篇文章
数据结构的概念大合集02(线性表)

1、数据结构基础的定义

名称具体概念
数据描述客观事物的数和字符的集合,能被计算机程序处理的符号总称
数据元素数据的基本单位,又称元素、结点、顶点、记录
数据项是具有独立含义的数据最小单位,是构成数据元素的最小单位,又称字段、域
数据对象性质相同的数据元素的集合,是数据的一个子集
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构
数据类型是一个值的集合和定义在这个值集上的一组操作的总称
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作

请添加图片描述

2、数据结构

2.1 数据元素之间关系的集合

数据的基本结构关系
集合属于同一个集合,没有什么具体关系
线性结构一对一
树形结构一对多
图形(网状)结构多对多

2.2数据结构的三要素

2.2.1数据的逻辑结构

从逻辑上表示数据,与具体的存储无关

数据的逻辑结构
线性结构
非线性结构
线性表
队列
集合

2.2.2数据的存储(物理)结构

指的是数据的逻辑结构在计算机的具体实现,依赖于计算机语言

数据的存储结构
顺序存储
链式存储
索引存储
散列存储 哈希存储

2.2.3数据的运算

数据的运算包括运算定义运算实现

  • 运算定义:对于运算功能的描述,是抽象的,是基于逻辑关系的
  • 运算实现:是程序员完成运算的实现算法,是具体的,是基于存储结构的

3、数据类型

指的是一组性质相同的值的集合和定义在此集合上的一组操作的总称
比如C语言中的int、float等。

4、抽象数据类型类型(ADT)

逻辑结构+抽象运算
定义抽象数据类型:
ADT 抽象数据类型名
{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}

5、算法及其描述

5.1算法的5个特性

又穷性;确定性;可行性;有输入;有输出

5.2算法设计的目标

正确性;可使用性;可读性;健壮性;高效率与低存储量需求

5.3算法的时间复杂度

主要衡量的是一个算法的运行速度。为了描述一个算法的时间复杂度,人们发明了一个通用的表示方法:

「 大O符号表示法 」,即 T(n) = O(f(n))

我们先来看个例子:

for(i=1; i<=n; ++i) //第一行
{j = i;	//第三行j++;		//第四行
}

在大O符号表示法中,f(n)表示每行代码的执行次数之和;

所以上述代码中,第一行执行一次,第三行执行n次,第四行执行n次,整段代码执行(1+2n)次,即f(n)=1+2n;

取波极限,当n无穷大时,则令f(n)=n(注意不是2n,这是简化的写法);

于是此时T(n) = O(n);

为什么可以大O表示法可以简写呢,主要是因为这个表达式主要是表示代码执行时间的增长的变化趋势的,所以当n无穷大时,常数1和倍数2的意义就不是很大了。所以在采取大O表示法的时候,我们常取其指数最大的一项来表示,同时省略其他项和指数最大项的倍数。

常见的时间复杂度量级有:

  • 常数阶O(1)
  • 对数阶O(logN)
  • 线性阶O(n)
  • 线性对数阶O(nlogN)
  • 平方阶O(n²)
  • 立方阶O(n³)
  • K次方阶O(n^k)
  • 指数阶(2^n)

上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。

5.3.1时间复杂度的求和、求积定理

T1(n) = O(f(n))
T2(n) = O(g(n))
求和:T1(n) + T2(n) = O( Max ( f(n),g(n) ) )
求积:T1(n) × T2(n) = O( f(n) × g(n) )

5.4算法的空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的一个量度,同样反映的是一个趋势,我们用 S(n) 来定义。与上面的时间复杂度一样,也采用大O表示法。
即S(n) = O( g(n) )
举例:

  1. 空间复杂度O(1)
    如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)
    举例:
int i = 1;
int j = 2;
++i;
j++;
int m = i + j;

代码中的 i、j、m 所分配的空间都不随着处理数据量变化,因此它的空间复杂度 S(n) = O(1)

  1. 空间复杂度O(n)
int fun(int n)
{return n < 2 ? n : fun(n - 1)*n;
}

阶乘递归函数会依次调用fun(N),fun(N-1),…,fun(2),fun(1),开辟了n个空间,所以空间复杂度为O(n) 。

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

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

相关文章

R语言实现中介分析(1)

中介分析&#xff0c;也称为介导分析&#xff0c;是统计学中的一种方法&#xff0c;它用于评估一个或多个中介变量&#xff08;也称为中间变量&#xff09;在自变量和因变量之间关系中所起的作用。换句话说&#xff0c;中介分析用于探索自变量如何通过中介变量影响因变量的机制…

将 OpenCV 与 Eclipse 结合使用(插件 CDT)

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;将OpenCV与gcc和CMake结合使用 下一篇&#xff1a;OpenCV4.9.0在windows系统下的安装 警告&#xff1a; 本教程可以包含过时的信息。 先决条件 两种方式&#xff0c;一种…

【IC设计】Verilog线性序列机点灯案例(二)(小梅哥课程)

文章目录 该系列目录&#xff1a;设计目标设计思路RTL 及 Testbench仿真结果存在的问题&#xff1f;改善后的代码RTL代码testbench代码 仿真结果 案例和代码来自小梅哥课程&#xff0c;本人仅对知识点做做笔记&#xff0c;如有学习需要请支持官方正版。 该系列目录&#xff1a;…

接雨水-热题 100?-Lua 中文代码解题第4题

接雨水-热题 100&#xff1f;-Lua 中文代码解题第4题 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释…

2.2 物理层传输介质

文章目录 2.2 物理层传输介质&#xff08;一&#xff09;传输介质及分类&#xff08;二&#xff09;导向型传输介质&#xff08;1&#xff09;双绞线&#xff08;2&#xff09;同轴电缆&#xff08;3&#xff09;光纤 &#xff08;三&#xff09;非导向性传输介质 总结 2.2 物理…

数字多空策略(实盘+回测+数据)

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

计算机网络----计算机网络的基础

目录 一.计算机网络的相关概念 二.计算机网络的功能 三.计算机网络的发展 四.计算机网络的组成 五.计算机网络的分类 六.计算机的性能指标 1.速率 2.带宽 3.吞吐量 4.时延 5.时延带宽积 6.往返时延RTT 7.利用率 七.计算机的分层结构 八.ISO/OSI参考模型 九.OSI…

【四 (6)数据可视化之 Grafana安装、页面介绍、图表配置】

目录 文章导航一、Grafana介绍[✨ 特性]二、安装和配置1、安装2、权限配置&#xff08;账户/团队/用户&#xff09;①用户管理②团队管理③账户管理④看板权限 3、首选项配置4、插件管理①数据源插件②图表插件③应用插件④插件安装方式一⑤安装方式二 三、数据源管理1、添加数…

宜搭faas服务器获取accessToken

可以用faas服务器的OpenAPIUtil.getCustomAccessTokenThenCache&#xff08;Client ID,Client Secret&#xff09;就可以获取 至于获取这个Client ID&#xff0c;Client Secret 就需要在钉钉开放平台创建一个应用 然后在这个应用的基础信息里面有 注意的是&#xff1a;如果需要…

如何通过小程序上的产品力和品牌力提升用户的复购能力?

随着网络购物小程序的发展以及内容电商、社交电商、垂直电商、品牌自营等多个细分类型的出现&#xff0c;小程序成为用户日常购物、大促囤货以及首发抢购的重要场景&#xff0c;市场竞争也逐渐激烈。如何在用户侧获得更多转化、留存与复购&#xff0c;成为企业品牌日益关注的话…

复习知识点

1. Java常用API 1.1 String类 在java中&#xff0c;String类代表字符串&#xff0c;字符串是常量的&#xff0c;不能被改变。如果想改变字符串。可以用字符串的缓冲区&#xff0c;StringBuffer、StringBuilder 1.1.1 String类的创建方式 第一种&#xff08;常用&#xff09…

DZB-214中间继电器 工作电压220V-保持电流1A-面板安装 JOSEF约瑟

系列型号:DZB-200中间继电器 DZB-210中间继电器&#xff1b;DZB-213中间继电器&#xff1b; DZB-214中间继电器&#xff1b;DZB-217中间继电器&#xff1b; DZB-220中间继电器&#xff1b;DZB-226中间继电器&#xff1b; DZB-228中间继电器&#xff1b;DZB-230中间继电器&#…

基于springboot+mysql+Shiro实现的宠物医院管理系统

1.项目介绍 系统主要为用户提供了管理员权限的用户&#xff0c;实现了前台查看客户信息、在线添加预约等&#xff1b;后台管理医生坐诊信息、管理就诊信息、修改密码&#xff0c;管理公告、管理宠物分类、管理就诊、管理用户、修改密码等。在设计方面&#xff0c;本系统采用MV…

Android Studio 打包 Maker MV apk 详细步骤

一.使用RPG Make MV 部署项目&#xff0c;获取项目文件夹 这步基本都不会有问题&#xff1a; 二.安装Android Studio 安装过程参考教材就行了&#xff1a; https://blog.csdn.net/m0_62491877/article/details/126832118 但是有的版本面板没有Android的选项&#xff08;勾…

Explain 关键字

优质博文&#xff1a;IT-BLOG-CN explain关键字可以模拟优化器执行 SQL 查询语句&#xff0c;从而知道 MySQL 是如何处理 SQL 语句的。分析查询语句或表结构的性能瓶颈。执行语句&#xff1a;explain SQL语句。表头信息如下&#xff1a; 一、ID 参数 select 查询的序列号&…

Webapi(.net6) 批量服务注册

如果不考虑第三方库&#xff0c;如Autofac这种进行服务注入&#xff0c;通过本身的.Core Weabpi实现的&#xff0c;总结了两种实现方法&#xff0c; 1.一种是参考abp框架里面的形式; 1.1 新建个生命周期的文件夹: 三个接口分别为: public interface IScopedDependency { }pu…

微信小程序开发学习笔记——3.11完成form评论案例的实现逻辑

>>跟着b站up主“咸虾米_”学习微信小程序开发中&#xff0c;把学习记录存到这方便后续查找。 课程连接&#xff1a;https://www.bilibili.com/video/BV19G4y1K74d?p25&vd_source9b149469177ab5fdc47515e14cf3cf74 一、javascript参考手册——splice https://www.…

Qt教程 — 3.4 深入了解Qt 控件:Input Widgets部件(3)

目录 1 Input Widgets简介 2 如何使用Input Widgets部件 2.1 Dial 组件-模拟车速表 2.2 QScrollBar组件-创建水平和垂直滚动条 2.3 QSlider组件-创建水平和垂直滑动条 2.4 QKeySequenceEdit组件-捕获键盘快捷键 Input Widgets部件部件较多&#xff0c;将分为三篇文章介绍…

基于Java+SpringMVC+vue+element实现前后端分离校园失物招领系统详细设计

基于JavaSpringMVCvueelement实现前后端分离校园失物招领系统详细设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收…

相机与相机模型(针孔/鱼眼/全景相机)

本文旨在较为直观地介绍相机成像背后的数学模型&#xff0c;主要的章节组织如下&#xff1a; 第1章用最简单的针孔投影模型为例讲解一个三维点是如何映射到图像中的一个像素 第2章介绍除了针孔投影模型外其他一些经典投影模型&#xff0c;旨在让读者建立不同投影模型之间的建模…