第一章 绪论
第一章 绪论
1.1数据结构的研究内容
数据结构:研究非数值计算的程序设计中计算机的操作对象以及他们之间的关系和操作
1.数值计算(数学模型:公式或方程)
2.非数值计算(具有逻辑关系的数据:表,图,树等)
1.2基本概念和术语
数据:能输入计算机且能被计算机处理的各种符号的集合
(整数,实数,文字,图像,声音等)
数据元素:(也称为元素,记录,结点或顶点)数据的基本单位,通常作为整体考虑和处理
例如:一个同学的姓名,性别,年龄,学号,班级等在表格中作为一个元素
数据项:构成数据元素的不可分割的最小单位
一个元素可由多个数据项组成,姓名和性别为两个数据项
数据>数据元素>数据项
数据对象:性质相同的数据元素的集合,是数据的一个子集
数据元素不是孤立的,它们之间存在关系,称为结构
数据结构是带结构的数据元素的集合
数据结构包括三个方面
1.逻辑结构:数据之间的逻辑关系(集合,线性,树形,图状)
线性结构:最多一个直接前趋和一个直接后继
2.物理结构(储存结构):数据元素及其关系在计算机内存中的表示(顺序,链式,索引,散列)
C语言中用数组实现顺序存储结构
用指针实现链式存储结构(可能不连续),存储元素本身还有下一个元素的地址
3.运算和实现
1.3数据类型和抽象数据类型
抽象数据类型只取决于它的一组逻辑特性,与计算机如何实现无关
抽象数据类型分为原子类型和结构类型,结构类型有固定聚合类型和可变聚合类型
1.4算法与算法分析
算法特性:有穷性,确定性,可行性,零个或多个输入,一个或多个输出
算法评判标准:正确性,健壮性,可读性,算法效率(运行时间,存储空间)
算法时间效率的度量:
1.事后统计(实现后测算)
缺点:耗费精力,结果依赖软硬件等环境因素
2.事前分析(估算)
时间=该语句执行一次所需时间(视作单位时间,可约去)*次数(语句频度)
(赋值,比较,移动等)
第一行,for循环中,i从1到n执行n次,但是最后还有一个i<=n的判断,所以是n+1
第二行,第二个for下面的循环体执行n次,每执行一次第二个for都要执行n+1次,所以为n*(n+1)
第四行,内外层循环都执行n次
T(n)=O(f(n))=nnn
计算时间复杂度:
1.寻找重复次数最多的语句;2.写f(n)3.找出数量级O(n)
时间复杂度仅比较数量级(找执行次数最多的语句),难以确定时讨论最坏情况
对于复杂的算法,可以将函数拆分成加法的,那么时间复杂度就等于各项中时间复杂度最大的那个;若拆分成乘法,那时间复杂度就是各项的时间复杂度的乘积。
计算空间复杂度:
所占空间:算法本身占用的空间(指令,输入输出,常数,变量)和算法所用的辅助空间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)