数据结构绪论

数据结构

数据: 信息的载体,描述事物属性的数,字符,以及能够输入到计算机中被计算机处理的符号的集合。

数据元素: 是数据的基本单位,一个元素数据可以有若干个数据项组成,数据项是组成数据元素的不可分割的最小单位。

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

数据类型:

  1. 原子类型:不可以再分割的数据类型
  2. 结构类型: 可以分解成若干成分的数据类型
  3. 抽象数据类型: 抽象数据组织和相关的操作

数据的三要素:

  1. 逻辑结构
    元素之间的逻辑关系,和储存无关,独立于计算机。逻辑结构分成 线性结构 非线形结构。
    线形结构: 一般线性表,受限线性表:栈和队列,串;数组,广义表
    非线形结构: 集合,树形结构:一般树,二叉树,图状结构:有向图,无向图

  2. 储存结构

数据在计算机中存在的物理结构: 顺序储存,链式储存,散列储存,索引
储存

  1. 数据的运算

算法的基本概念
  1. 有穷性:执行一定步数之后,在有穷时间内完成
  2. 确定性: 有确切的含义,相同的输入只能获得相同的输出
  3. 可行性: 通过已经实现的基本的运算执行有限次实现
  4. 输入: 零个或者多个输入
  5. 输出: 零个或者多个输出

评价的标准的:

  1. 正确性
    能够正确的解决求解问题
  2. 可读性
    良好的可读性可以帮助人们理解
  3. 健壮性
    输入非法数据,算法可以正确的做出反应,进行处理
  4. 效率和低储存量需求
    效率:算法执行的时间,储存量需求需要的最大的储存空间。两者都与问题规模有关。
时间复杂度 T=O(n) 衡量

频度: 一句语句在算法中被重复执行的次数
算法中所有的语句品读之和几位T(n), n是问题规模,最深层循环内语句的频度与Tn相同时间复杂度

但是往往复杂度不光光和问题的规模相关,和其他的条件(多条件loop)
硬刺存在如下指标:
最坏时间复杂度
平均时间复杂度
最好时间复杂度

复杂度的加法规则
Tn=Tn1 + Tn2 = O(Max(fn,gn))
Tn=Tn1 * Tn2 = O(fn*gn)

复杂度为:

    O(1) < O(log2N)< O(n)< O(nlog2N)< O(n^2)< O(n^3)< O(2^n)< O(n!)< O(n^n) 
时间复杂度 S=O(n) 衡量

除去需要的存放本身的指令常熟变量输入输出的数据意外。为了解决问题的辅助空间额外空间

inplace算法也就是原地工作算法就是常量空间 O(1);

数据结构绪论

上一篇:【Scala】03 函数


下一篇:7:高阶张量操作