数据结构与算法概述

449 阅读2分钟
  • 数据结构

    • 数据基本组成

      • 数据:所有能输入到计算机中去的描述客观事物的符号
      • 数据对象:相同特性数据元素的集合,是数据的一个子集
      • 数据元素:数据的基本单位,可以说成一个节点
      • 数据项:数据的最小单位,多个数据项组成一个数据元素
        它们的关系如下图:
    • 逻辑结构
      数据的逻辑结构是对数据之间关系的描述具体包含:
      (1)集合结构


      元素直接除了在同一个集合外没有其他对应关系

      (2)线性结构

      元素直接是一对一的关系

      (3)树形结构


      元素之间是一对多的关系

      (4)图形结构


      元素之间是多对多的关系

    • 物理结构
      (1)顺序存储结构
      会根据元素的数量提前申请一连串连续的存储空间


      (2)链式存储机构
      用一组任意存储单元存储元素,在加入元素时申请存储空间存储元素

  • 算法

    • 数据结构与算法的关系
      程序=数据结构+算法

    • 算法的定义
      算法就是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每个指令表示一个或多个操作

    • 算法特性

      • 输入输出
      • 有穷性
      • 确定性
      • 可执行性
    • 算法的设计要求

      • 正确性
      • 可读性
      • 健壮性
      • 时间效率高和储存量低
    • 时间复杂度
      常用大O表示法常见的时间复杂度:

      执行次数函数 术语
      8 O(1) 常数阶
      2n+10 O(n) 线性阶
      5n^2+8n+1 O(n^2) 平方阶
      7log3n_20 O(log n) 对数阶
      3n+nlog2n+17 O(nlog n) nlogn阶
      7n^3+3n^2+14 O(n^3) 立方阶
      2^n O(2^n) 指数阶

      O(1) < O(log n) < O(n) < O(nlog n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
      若时间复杂度相等的情况下可用平均情况下的时间复杂度
      大O表示法:
      (1). 用常数1取代运行时间中所有常数 3->1 O(1)
      (2). 在修改运行次数函数中,只保留最高阶项 n^3+2n^2+5 -> O(n^3) (2). 如果在最高阶存在且不等于1,则去除这个项目相乘的常数 2n^3 -> n^3

    • 空间复杂度
      程序空间计算因素:
      (1)寄存本身的指令
      (2)常数
      (3)变量
      (4)输入
      (5)对数据进行操作的辅助空间
      在考量算法的空间复杂度,主要考虑算法执行时所需要的辅助空间