数据结构理论

目录

基本概念和术语

数据

数据元素

数据项

数据对象

数据结构

数据的结构

逻辑结构

存储结构(物理结构)

数据类型

定义

原子数据类型

结构数据类型

[抽象数据类型(Abstract Data Type,ADT)](#抽象数据类型(Abstract Data Type,ADT))

算法和算法分析

算法

算法设计要求

时间复杂度

空间复杂度


基本概念和术语

数据

对客观事物的符号表示,描述客观事物的数、字符、以及所有能输入到计算机中,被计算机程序识别和处理的符号的集合。

包括数值型数据和非数值型数据。

数据元素

数据的基本单位,又别称元素、结点、记录。

一个数据元素可由若干个数据项组成。

数据项

数据项时数据的不可分割的最小单位。

一个数据元素可由若干个数据项组成。

数据对象

性质相同的数据元素的集合,是数据的一个子集。

数据结构

相互之间存在一种或多种特定关系的数据元素的集合。

形式定义

数据结构是一个二元组

(D,S)

D是数据元素的有限集,S是D上关系的有限集。

数据的结构

逻辑结构

集合结构

线性结构

树形结构

图形结构(网状结构)

存储结构(物理结构)

顺序存储

链接存储

索引存储

散列存储

数据类型

定义

数据类型是一个数据结构和定义在这个数据结构上的一组操作的总称。

原子数据类型

是不可分解的数据类型,如C语言中的整型(int),实型(float),字符型(char),指针类型(*)和空类型(void)等。

结构数据类型

由若干成分(原子类型或结构类型)按某种结构组成的数据类型,结构数据类型可以看作是一种数据结构和定义在其上的一组操作组成的整体。如数组,由若干分量组成,每个分量可以是整数,也可以是数组(如int A[10])。

抽象数据类型(Abstract Data Type,ADT)

一个数学模型以及定义在该模型上的一组操作。

个人认为是一种模板化数据结构,即保留逻辑特性,但它的数据元素没有限制具体的数据类型,比如说一个链表可以是整型的、浮点型的,集合可以套集合等等等等。

三元组表示抽象数据类型。

(D,S,P)

D是数据对象,S是D上的关系集,P是对D的基本操作集。

算法和算法分析

算法

算法

算法是对特定问题求解步骤的一种描述,它是指令的有限序列。

有穷性

算法在执行有穷步后能结束。

确定性

每步都是确切的、无歧义。

可行性

操作可做。

输入

有0个或多个输入。

输出

有一个或多个输出。

算法设计要求

正确性

满足具体问题的需求。

可读性

偏于理解和修改。

健壮性

当输入数据非法时,也能适当反应。

效率高

执行时间少。

空间省

执行中需要的最大存储空间。

时间复杂度

渐进时间复杂度

时间复杂度是问题规模n的函数 f(n)

T(n)=O(f(n))

频度

语句重复执行的次数。

常量阶O(1)

{}

线性阶O(n)

for(i=0;i<n;i++){}

平方阶O(n\^2

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{}

对数阶O(logn)

for(i=0;i<n;i=i*2){}

指数阶O(2\^n

for(i=1;i<=pow(2,n);i++){}

排列阶O(n!)

for(i=j=1;i<=j;i++,j=j*(j+1)){}

空间复杂度

空间复杂度

算法执行时所需要的存储空间的量度,也是问题规模的函数

S(n)=O(f(n))

相关推荐
Q741_14713 分钟前
C++ 位运算 高频面试考点 力扣 面试题 17.19. 消失的两个数字 题解 每日一题
c++·算法·leetcode·面试·位运算
初圣魔门首席弟子30 分钟前
C++ STL string(字符串)学习笔记
c++·笔记·学习
AA陈超1 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P04-12 可缩放浮点数的曲线表
c++·游戏·ue5·游戏引擎·虚幻
旭意1 小时前
C++微基础备战蓝桥杯之数组篇10.1
开发语言·c++·蓝桥杯
LGL6030A1 小时前
数据结构学习(2)——多功能链表的实现(C语言)
数据结构·学习·链表
nsjqj1 小时前
数据结构:栈和队列
数据结构
xwl12122 小时前
10.6 作业
数据结构·算法
青草地溪水旁2 小时前
VSCode C/C++ 构建任务配置文件 `tasks.json` 全字段深度解析
c语言·c++·vscode
爱和冰阔落4 小时前
C++模板进阶 非类型模板参数 模板的特化 分离编译的深入探索
c++·面试·编译原理·模板
charlie11451419110 小时前
精读C++20设计模式:行为型设计模式:中介者模式
c++·学习·设计模式·c++20·中介者模式