数据结构概述

本文详细介绍了数据结构的基础概念,包括线性结构(如数组、链表)和非线性结构(如树、图)的特性,并探讨了算法的时间复杂度和空间复杂度,强调了它们在衡量算法效率中的重要性。通过实例展示了从常数阶到高次方阶的时间复杂度,并分析了不同时间复杂度在实际应用中的差异。此外,还提到了空间复杂度的概念,以及如何评估算法所需存储空间。
摘要由CSDN通过智能技术生成

在这里插入图片描述

资本贫穷,精神贫穷,你是不是双穷?

数据结构概述

做好软件开发工作,就必须了解如何组织各种数据在计算机中的存储、传递和转换。

你真的了解吗?


一、离散数学和数据结构

"数据结构"课程脱胎于“离散数学结构”,它涉及各种离散结构(如向量、集合、树、图、代数方程、多项式等)在计算机上如何存储和处理。

二、数据和数据结构

现在网络世界,是我们的现实世界通过计算机构建出来的,而我们的信息需要转换成为数据才能在计算机中进行处理;

数据(data)是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。
数据大致可以分成两类数值型数据和非数值性数据;

数值型数据:就是咱们从上学开始接触的数字(整数、浮点数、复数等),用它就是各种计算呗,比如说计算核弹轨道或者是买菜算账啥的,你能想到的数学上运算相关的,只要是他能干的都干(这是个废话);

非数值数据:包括字符和字符串以及文字、图像、语音等数据;比如说李诞的脱口秀,帅气的脸庞、高笑的段子和魔性的笑声。
在这里插入图片描述
数据结构:

数据结构由某一数据元素的集合和该集合中数据元素之间的关系组成;

Data_Structure = {D,R}
D是某一数据元素的集合;
R是该集合中所有数据元素之间的关系的有限集合;

三、线性结构和非线性结构

根据数据元素之间的关系的不同,我们可以将数据结构分成两大类:
线性结构和非线性结构;
线性结构:

最常用的数据结构,其特点是数据元素之间存在一对一的线性关系;
两种不同的存储结构:顺序存储结构和链式存储结构;
顺序存储的线性表称为顺序表,顺序表存储元素是连续的;
链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存储数据元素以及相邻元素的地址信息;


顺序表的存储空间是连续的,就是各个表项的逻辑顺序和其存放的物理顺序是一致的;就和你考试一样,你坐的顺序和你考号的顺序他是一致的,不一致那绝对会出事的;
单链表的一个存储节点包括两个部分:数据域(data)他是存数据的,指针域(link)他是一个指针,指向下一个节点的开始存储地址;
线性结构常见的有一维数组、队列、栈、链表;
非线性结构:树、图、多维数组、广义表;

四、算法的衡量

算法是指用来操作数据、解决程序问题的一组方法;

对于同一个问题,使用不同的算法,或许最后我们得到的最终结果是一样的,但是在这个过程中消耗的资源和时间会有很大的区别;

就好比我们从青岛去北京旅游,你可以坐飞机,这样会比较节省时间,但是相对的花费可能会比较高;有人可能会开车,这样虽然比较节省成本,但是花费的时间会比较长,对于算法也是一样的,我们如何去衡量不同算法之间的优劣呐?
在这里插入图片描述

我们衡量算发的好坏主要是从时间和空间两个维度去考量;
时间维度:执行当前算法消耗的时间,用时间复杂度衡量;
空间维度:执行当前算法需要占用多少内存,用空间复杂度衡量;
当然两个指标都好更好,但是有时候鱼和熊掌不可兼得,就像左手右手不能同时做兄弟一样。

时间复杂度

可能你会想,比较时间还不容易,把程序都运行一边不就知道时间了,这个方法当然是可取的,但是很容易受你的硬件的影响还有你的数据规模。
这里我们来一个统一的衡量办法–

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值