数据结构篇_知识点板块_第一章绪论

  • 数据结构篇为本人考研时所写笔记,包括知识点和编程思想两大板块,笔记内容依据王道数据结构考研书所写,但比书本上知识更加生动形象,愿本篇章能对您有所帮助
  • 注意:数据结构篇为本人手动将Word文档修改成Markdown格式(因为网上修改的方法都会出现较多错误),故格式可能有时会不太整齐请见谅,阅读时请务必主要内容前的编号

一、绪论

  1. 基本概念:

① 数据元素:是数据的基本单位(由数据项构成)

② 数据项:一个元素由若干数据项组成,数据项是构成数据元素的不可分割的最小单位

③ 数据对象:具有相同性质的数据元素集合,是数据的一个子集

④ 数据结构:相互之间存在一种或多种特定的关系的数据元素集合,包括三个方面:逻辑结构、存储结构、数据的运算

⑤ 数据类型:一个值的集合和定义在此集合上的一组操作的总称

⑥ 抽象数据类型(ADT):是指一个数学模型及定义在该模型上的一组操作,一个抽象数据类型的软件模块通常包含定义、表示和实现

​ 三元组(D,S,P):数据对象,数据关系,基本操作

​ 二元组(D,R):数据元素的集合,D上关系的集合

  1. 数据的物理结构主要包括顺序存储结构和链式存储结构

  2. 逻辑结构:独立于计算机(数据逻辑结构独立于其存储结构),分为线性结构(一维数组是线性结构的,二维数组和多维数组不是线性结构的)和非线性结构(树型结构,网状结构,集合);例如栈是抽象数据类型,可采用顺序存储或链式存储,故为逻辑结构

存储结构:依赖于计算机,主要有顺序存储、链式存储、索引存储、散列存储

  1. 运算的定义是针对逻辑结构的,指出运算的功能

运算的实现是针对存储结构的,指出运算的具体操作步骤

  1. 在存储数据时,不仅要存储数据元素的值,而且要存储数据元素之间的关系

  2. 程序=数据结构+算法

  3. 一个算法应该是问题求解的步骤描述

  4. 算法的特性:

① 有穷性

② 确定性

③ 可行性

④ 输入

⑤ 输出

  1. 好的算法特性

① 正确性

② 可读性

③ 健壮性

④ 高效率与低存储需求

10. 时间复杂度计算(T(n),一般记为O(n)):

① 注意题目问到时平均时间复杂度还是时间代价表达式

② 若为大题则必须写过程,否则可能不记分

③ T(n)=O(f(n))。一般地,若T(n)是有关n的一个多项式,则f(n)可由T(n)中的最高此项去掉系数所得,O(n)也是一个函数,它表示渐进时间复杂度

④ 多数情况是选择最深层循环内的语句中的原操作,计算该原操作的重复执行次数

⑤ 有时需要同时考虑几种原操作,多项相加保留最高阶的项,多项相乘都保留(空间复杂度同)

⑥ 有时算法的原操作重复执行次数还随问题的输入数据集不同而不同,对于这种情况一般采取计算平均值的办法(即平均时间复杂度)

⑦ 多数情况输入数据集的概率难以确定,此时平均时间复杂度不好算,故一般讨论算法在最坏情况下的时间复杂度(即为上界)

 易错:很明显时间复杂度与n有关,故当程序中没有n的出现时,若一切都为确定的数不管循环有多大,这个程序的运行都是和n无关的,故T(n)=O(1)


  1. (时间复杂度和空间复杂度经典排序)

补充:(2/3)^n < 2^100 < lg_n < n^1/2

  1. 空间复杂度(S(n))=递归调用的深度(每次递归调用所产生的空间复杂度一样的前提下(没有类似于a[n]这种数组创建和传入的相关的代码))

  2. 算法原地工作是指算法所需的辅助空间是常量,不是指不需辅助空间

  3. 算法中语句的频度不仅与问题规模有关,还与输入实例中各元素取值相关,但在最坏的情况下,时间复杂度就是只与求解问题的规模有关的

posted @ 2022-04-10 23:25  Oten  阅读(218)  评论(0编辑  收藏  举报