数据结构理论

目录

基本概念和术语

数据

数据元素

数据项

数据对象

数据结构

数据的结构

逻辑结构

存储结构(物理结构)

数据类型

定义

原子数据类型

结构数据类型

[抽象数据类型(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))

相关推荐
纽扣6677 分钟前
【算法进阶之路】链表进阶:删除、合并、回文与排序全解析
数据结构·算法·链表
智者知已应修善业36 分钟前
【51单片机不用数组动态数码管显示字符和LED流水灯】2023-10-3
c++·经验分享·笔记·算法·51单片机
AI进化营-智能译站1 小时前
ROS2 C++开发系列16-智能指针管理传感器句柄|告别ROS2节点内存泄漏与野指针
java·c++·算法·ai
报错小能手1 小时前
好好讲讲移动构造 移动赋值
c++
syker2 小时前
AIFerric深度学习框架:自研全栈AI基础设施的技术全景
开发语言·c++
xvhao20132 小时前
单源、多源最短路
数据结构·c++·算法·深度优先·动态规划·图论·图搜索算法
笑鸿的学习笔记4 小时前
qt-C++语法笔记之Qt Graphics View 框架中的类型辨析完全指南
c++·笔记·qt
山居秋暝LS4 小时前
安装C++版opencv和opencv_contrib
开发语言·c++·opencv
谭欣辰4 小时前
LCS(最长公共子序列)详解
开发语言·c++·算法
m0_629494734 小时前
LeetCode 热题 100-----17.缺失的第一个正数
数据结构·算法·leetcode