当前位置: 首页 > news >正文

数据结构的概念大合集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://www.lryc.cn/news/321832.html

相关文章:

  • .NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】
  • 突飞猛进,智能饮品机器人如何助力实体经济?
  • AI:150-基于深度学习的医学数据挖掘与病症关联发现
  • c语言:最大公约数
  • 12 对称加密AES和非对称加密RSA
  • Vue2(二):计算属性、监视属性、二者的区别
  • CTF题型 SSTI(2) Flask-SSTI典型题巩固
  • 计算机设计大赛 题目: 基于深度学习的疲劳驾驶检测 深度学习
  • 小字辈[天梯赛]
  • Linux常用操作命令、端口、防火墙、磁盘与内存
  • <JavaEE> 了解网络层协议 -- IP协议
  • 【安全类书籍-2】Web渗透测试:使用Kali Linux
  • ubuntu10.04 apache2.2开启tls1.2的支持,使现代的edge和firefox浏览器能正常访问https
  • 算法学习(持续更新中)
  • 蓝桥杯 2023 省B 飞机降落
  • 基于python的变配电室运行状态评估与预警系统flask-django-nodejs-php
  • el-table左键双击单元格编辑内容(输入框输入计算公式可直接得出结果),右键单击展示操作菜单,可编辑单元格高亮展示
  • 实现HBase表和RDB表的转化(附Java源码资源)
  • 10:00面试,10:06就出来了,问的问题有点变态。。。
  • 【Python】: Django Web开发实战(详细教程)
  • 突破编程_C++_C++11新特性(tuple)
  • xss.pwnfunction(DOM型XSS)靶场
  • 安装 docker 和 jenkins
  • jni入门学习 CMakeLists脚本
  • 如何在没有向量数据库的情况下使用知识图谱实现RAG
  • 6.如何判断数据库搜索是否走索引?
  • Java并发编程的性能优化方案中,哪些方法比较常用
  • AcWing 2867. 回文日期(每日一题)
  • 学习笔记-华为IPD转型2020:3,IPD的实施
  • 2024腾龙杯web签到题-初识jwt(签到:这是一个登录页面)