《数据结构教程(第四版)》读书笔记-第一章 绪论

第一章 绪论

数据
数据元素是数据(集合)中的一个“个体”,是数据的基本单位。又称为元素、结点、顶点、记录等。
数据项是具有独立含义的、组成数据元素的最小单位。称为字段、域。数据元素是数据项的集合。

程序=算法+数据结构(逻辑结构和存储(物理)结构)

逻辑结构的类型:
1. 线性结构,一对一关系,除了开始结点和终端结点外,其他节点有且仅有一个前驱结点和一个后继结点。
2. 非线性结构,分为树形结构(一对多)和图形结构(多对多)。

数据逻辑结构的描述方式:
数学描述 B=(D,R)和图形描述。

物理存储结构的类型:
顺序存储:逻辑上相邻的结点在物理位置上也相邻。存储区是一片连续的地址空间,存储密度大,空间利用率高(节点间逻辑关系没有额外占用存储空间)。在程序设计中可以由数组实现,每个元素的存储地址是可以计算的(实现随机访问)。缺点是节点运算不方便,每次操作都要引起大量的节点移动。

链式存储:每个节点至少包括一个指针域,用指针来体现逻辑关系,可以离散的存储。存储密度小,利用率低。优点:操作方便,只要改变指针即可,原来各节点在内存中的位置并不移动。缺点:结点不一定相邻,不能随机访问。

索引存储:建立附加的索引表,内含每一项称为索引项,包含关键字和地址。关键字唯一标识一个节点,地址作为指向节点的指针。可以进行随机访问,操作结点时只需移动索引表中的指针地址。

散列(哈希)存储:根据结点值(采用某种公式)计算出存储地址的影射方式。又称“关键码-地址转换法”。结点离散。在排序和查找数据时经常使用。与前三种不同,散列存储只存储结点数据,不存储逻辑关系。一般只适合快速查找和插入数据。

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

算法:有穷性、确定性、可行性、输入性、输出性。算法有穷性,但程序可能无穷循环。

算法设计的目标:正确性、可读性、健壮性、高效率与低存储量需求。

算法效率分析:算法的执行时间=基本运算所需时间*基本运算执行的次数
时间复杂度:执行基本运算的次数。基本运算次数是问题规模n的某个函数。记作:T(n)=O(f(n))。一个程序时间复杂度是由程序中最复杂的部分组成。

  • 没有循环,常数阶,O(1)。
  • 一重循环,线性阶,O(n).
  • 平方阶O(n^2),立方阶O(n^3),对数阶。

空间复杂度:指一个算法所需的辅助内存空间的大小 S(n),分为确定的空间(不依赖输入数据的大小,常数C表示,忽略不计)和变化的空间(受n影响,递归程序需要额外的空间)。如果算法没有变化空间需求,即空间复杂度为零。

你可能感兴趣的:(数据结构)