考研数据结构笔记--数据结构和算法的基本概念
考研数据结构笔记--数据结构和算法的基本概念
- 数据结构的基本概念
- 算法的基本概念
数据结构的基本概念
数据
数据是对客观事物的符合表示,在计算机科学中是指所有能输入到计算机中并且被计算机程序处理的符合的总称。例如,整数、实数和字符串都是数据。
数据元素
数据元素时数据的基本单位,在计算机程序中通常将其作为一个整体进行考虑或处理。一个数据元素可以由若干个数据项组成。
数据项
数据项是数据结构中讨论的最小单位,是数据记录中最基本的、不可分的数据单位。
数据对象
数据对象是性质相同的数据元素的集合,是数据的一个子集。
数据结构
数据结构是指相互之间存在的一种或多种特定关系的数据元素的集合。数据结构包含3方面的内容:逻辑结构、存储结构和对数据的运算。
数据的逻辑结构
数据的逻辑结构是对数据之间关系的描述,它与数据的存储结构无关,同一种逻辑结构可以有多种存储结构。
数据的逻辑结构主要有以下两类:
- 线性结构
线性结构是一个数据元素的有序集合,主要有以下四个基本特征:
- 集合中必须存在唯一的一个“第一个元素”
- 集合中必须存在唯一的一个“最后一个元素”
- 除了最后一个元素之外,其它数据元素均有唯一的“后继”
- 除了第一个元素之外,其它数据元素均有唯一的“前驱”
数据结构中,线性结构是指数据元素之间存在着“一对一”的线性关系的数据结构
- 非线性结构
与线性结构不同,非线性结构中结点存在着一对多的关系,它又可以细分为树形结构和图形结构。
数据的物理结构
也就是存储结构,是数据的逻辑结构在计算机中的表示(又称映像)。它包含数据元素的表示和关系的表示。当数据元素时由若干数据项构成的时候,数据项的表示称为数据域。
数据元素之间的关系在计算机中有两种不同的表示方法:顺序映像和非顺序映像。对应两种不同的存储结构分别是顺序存储结构和链式存储结构。
在数据结构中有以下四种常用的存储方法:
- 顺序存储方法:逻辑上相邻的两个结点存储在屋里位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。
- 链式存储方法:不要求逻辑上相邻的结点在屋里位置上也相邻,结点间的逻辑关系由附加的指针字段表示。
- 索引存储方法:在存储结点信息时,除建立结点信息外,还建立附加的索引表来标识结点的地址。索引项的一般形式
<关键字,地址>
。关键字标识唯一一个结点,地址作为指向结点的指针。 - 散列存储方法:根据结点的关键字通过散列函数直接计算出该结点的存储地址。
算法的基本概念
算法
算法可以理解为由基本运算及规定的运算顺序所组成的完整的解题步骤,或者是看成按照要求设计好的有限的确切的计算序列。
算法的特性
- 有穷性:必须保证执行有限步之后结束
- 确定性:每一步必须有确定的定义
- 输入:有0个或多个输入
- 输出:有一个或多个输出
- 可行性:所有操作必须可以通过已经实现的基本操作进行运算
算法的设计目标
正确性、可读性、健壮性和算法效率
程序
程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的有限性。
算法复杂度是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂度,需要的空间资源的量为空间复杂性
- 时间复杂度和空间复杂度是只依赖与算法求解的问题规模和算法输入函数
- N、I分别表示算法求解的问题规模和算法输入,则算法的时间复杂度T和空间复杂度S可以分别表示为:
- T = T(N, I)
- S = S(N, I)
影响算法执行时间的因素:
- 计算机配置
- 问题规模
- 输入实例
时间复杂度:
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),它称为算法的渐进时间复杂度,简称时间复杂度
将算法中基本操作执行的次数作为算法时间复杂度的度量。
常用时间复杂度的比较关系:
O(1)<=O(log2(n))<=O(n)<=O(nlog2(n))<=O(n2)<=O(n3)<=···<=O(nk)<=O(2n)
求解算法时间复杂度的步骤
- 确定算法中的基本操作以及问题的规模
- 根据基本操作执行情况计算出规模n的函数f(n),并确定时间复杂度为T(n)=O(f(n)中增长最快的项/此项的系数)
算法的空间复杂度
算法的空间复杂度指算法在运行时所需存储空间的度量,主要考虑在算法运行过程中临时占用的存储空间的大小。
考研数据结构笔记--数据结构和算法的基本概念相关推荐
- 【数据结构笔记03】算法实例:最大子列和
本次笔记内容: 1.3.1 应用实例_算法1&2 1.3.2 应用实例_算法3 1.3.3 应用实例_算法4 文章目录 最大子列和问题 算法1:把所有子列拿出来比较(暴力法) 算法2:不做重复 ...
- 数据结构笔记——最短路径BFS算法
写在前面:科班出身,应届考研党,愿21考研成功上岸,冲冲冲! 目录 一.最短路径问题 二.BFS求无权图的单源最短路径 三.代码实现 四.总结 一.最短路径问题 单源最短路径--BFS算法.Dijks ...
- 数据结构(01)— 算法复杂度概念及常见的复杂度计算
1. 大 O 表示法 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度.大 O 表示法指出了最糟情况下的运行时间.大 O 表示法在讨论运行时间时, ...
- 二、考研数据结构笔记——绪论(理解数据结构,算法,时间复杂度计算做题技巧)
一.数据结构基本概念 1.数据:数据是信息的载体.客观事物的一种表现形式.万事万物都能用数据表示出来. 2.数据元素:数据元素是数据的基本单位,一个数据元素有若干个数据项组成 3.数据项:构成数据元素 ...
- 天勤计算机考研高分笔记(一)绪论4数据结构与算法的基本概念
1.3.1数据结构的基本概念 1.数据 数据是一种对客观事物的符号表示,是可以输入计算机中,并被计算机程序处理的符号的总称.(整数,实数,字符串) 2.数据元素(数据项< <数据结构,数据 ...
- 【王道考研】王道数据结构与算法详细笔记(全)
目录 第一章 数据结构绪论 1.1 数据结构的基本概念 1.2 数据结构的三要素 1.2.1. 数据的逻辑结构 1.2.2. 数据的存储结构(物理结构) 1.2.3. 数据的运算 1.2.4. 数据类 ...
- 数据结构笔记(王道考研) 第八章:排序
大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找...).后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到 ...
- 数据结构笔记(王道考研) 第五章:树和二叉树
大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找...).后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到 ...
- 一、考研数据结构笔记——引言及目录
一.关于我理解的数据结构 1. 引言 本人自2021年3月准备考研,考研主要是为了提升学历,本科院校不是理想.迫切需要提高学历. 写这刊博客,主要是总结我考研路上对数据结构的一些理解,以及为了方便我后 ...
最新文章
- pycharm安装pytorch报错 提示系列问题 torch 包找不到因为pip版本低,结果升级了pip从19.3到20.2 4又提示高版不支持torch安装
- toeplitz--生成托普利兹矩阵
- 10次迭代9次delay??拒绝项目延期,这里有一整套方法!
- 在html语言中frame,html Frame、Iframe、Frameset 的区别
- hdu2709 Sumsets 递推
- C# switch语句中,可以放哪些类型
- 来认识下less css
- ajax瀑布流 dede,dedecms加载更多,无限下拉瀑布流插件
- conda python源配置
- 飞到半路被撞?不是小鸟不专心,而是太阳能太晃眼
- 详解win7升级win10原来的软件还能用吗
- Matlab中loglog函数使用
- 根据VendorId 和DeviceId 查看PCI设备的名称
- 苹果x微信为什么不出定位服务器,苹果x微信发动态为什么显示不了位置
- (三)CGAL库应用:仿射变换(点的旋转、平移、放大)
- idea 弹出Server‘s certificate is not trusted 解决方法
- 吉首大学校赛 K	白山茶与红玫瑰 (线段树区间操作)
- [Luogu] 逆序数P5149 会议座位
- linux下安装ab压力测试工具及ab命令详解
- 2018年7月23日安全快讯