数据结构——1.1 基本概念,存储形式—算法时间复杂度—空间复杂度

四大逻辑结构

集合结构

  • 定义:处于同一数据集合中的元素之间除同属该集合这一联系外没有其他的关系。
  • 集合中的主要操作有查找和排序。集合结构的元素间没有固有的关系,不需要存储关系,往往借助于其他数据结构,如线性表和树。

线性结构——一对一

  • 定义:数据元素之间存在着“一对一”的线性关系的数据结构。
  • 1.集合中必存在唯一的一个"第一个元素";
    2.集合中必存在唯一的一个"最后的元素";
    3.除最后元素之外,其它数据元素均有唯一的"后继";
    4.除第一元素之外,其它数据元素均有唯一的"前驱"。

树形结构——一对多

  • 定义:数据元素之间存在着“一对多”的树形关系的数据结构,是一类重要的非线性数据结构。
  • 在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。

图形结构——多对多

  • 定义:树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关。而在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。

物理结构

  • 定义:数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。
  • 它包括数据元素的表示和关系的表示。 物理结构,即oracle数据库使用的操作系统文件结构。

数据元素存储形式

顺序存储

  • 定义:把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现

链式存储

  • 定义:在计算机中用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
  • 需要一个指针存放数据元素的地址,通过地址找到相关联数据元素的位置

算法

  • 算法:规则的有限集合 是为解决特定问题而规定的一系列操作
  • 算法的特性:有限性 确定性 输入+输出 可行性
  • 算法设计要求:
  1. 正确性
  • 程序无语法错误;
  • 程序对几组输入数据能够得出满足要求的结果;
  • 程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足要求的结果;
  • 程序对于一切合法的输入数据都能产生满足要求的结果。
  1. 可读性
  2. 健壮性:对非法输入的抵抗能力
  3. 高效率和低存储量
  • 算法的效率:通常指算法的执行时间
  • 算法的存储量:算法在执行过程中所需要的最大存储空间

算法效率的度量方法

1. 事后统计法————(很大缺陷)
  • 定义:通过设计好的程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低
1. 事前分析估算方法
  • 定义:在计算机程序编写前,依据统计方法对算法进行估算

算法时间复杂度

  • 定义:表示随问题规模n的增大,算法执行时间的增长率T(n)和f(n)的增长率相同 记作:T(n)=O(f(n)) 也叫作:算法时间量度
  • T(n):语句执行总次数
  • n:问题规模
  • f(n):问题规模n的某个函数
  • 最优算法:随着输入规模n的增大, T(n)增长最慢的算法

常见的时间复杂度

时间复杂度 术语
O(1) 常量阶
O(n) 线性阶
O(n^2) 平方阶
O(n^3) 立方阶
O(2^n) 指数阶
O(logn) 对数阶
O(nlog2n) 二维型
  • 常用的时间复杂度所耗费的时间从小到大依次为:O1) < O(logn) < O(n) < O(nlogn)

算法空间复杂度

  • 定义:通过计算算法所需的存储空间实现。 记作:S(n)=O(f(n)) 也叫作:算法空间量度
  • S(n):语句执行总次数
  • n:问题规模
  • f(n):问题规模n的所占存储空间的函数

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