【数据结构与算法-入门学习】看这一篇就够了(持续更新)

数据结构与算法-入门学习-持续更新

  • 文章结构
  • 第一章、绪论
    • 1.1 如何学习
    • 1.2 什么是程序
    • 1.3 基本概念和术语
      • 1.3.1 数据、数据元素、数据项
      • 1.3.2 数据元素和数据对象的关系
      • 1.3.3 数据结构
      • 1.3.4 数据结构的两个层次
        • 1.3.4.1 逻辑结构
        • 1.3.4.2 物理结构(存储结构)
        • 1.3.4.3 两者之间关系
      • 1.3.5 逻辑结构的种类
      • 1.3.6 存储结构的种类
      • 1.3.7 数据类型和抽象数据类型
        • 1.3.7.1 数据类型
        • 1.3.7.2 抽象数据类型
    • 1.4 算法与算法分析
      • 1.4.1 算法的定义
      • 1.4.2 算法的描述
      • 1.4.3 算法与程序
      • 1.4.4 算法的特性
      • 1.4.5 算法设计的要求
      • 1.4.6 算法时间效率的度量
      • 1.4.7 分析算法时间复杂度的基本方法
      • 1.4.8 算法时间效率的比较
      • 1.4.9 渐进空间复杂度

【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第1张图片

文章结构

【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第2张图片

第一章、绪论

1.1 如何学习

在正式开始之前,需要了解的,数据结构这门课程无论是参加工作面试,还是考研学习都是一门十分重要的课程的,它学习的难度也是十分的大!我们在学习的过程当中一定要保持住以下几点!

  • 勤于思考
  • 多做练习
  • 多上机练习
  • 善于寻求帮助
  • 不怕困难,不放弃!

1.2 什么是程序

程序=数据结构+算法

1.3 基本概念和术语

1.3.1 数据、数据元素、数据项

  • 数据

    概念: 是能输入计算机且能被计算机处理的各种符号的集合

    1. 信息的载体
    2. 是对客观事物符号化的表示
    3. 能够被计算机识别、存储和加工

    数据包括:

    1. 数值型数据 :整数,实数等(可以进行算数运算)
    2. 非数值型的数据 :文字,图像,图形,声音等
  • 数据元素

    概念:是数据的 基本单位,在计算机程序当中通常作为一个整体进行考虑和处理

    简称:元素,记录,结点,顶点
    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第3张图片

  • 数据项

    概念:构成数据元素的不可分割的最小单位

    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第4张图片
    数据 - 数据元素 - 数据项 三者之间的关系
    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第5张图片

  • 数据对象

    概念:性质相同的数据元素的集合,是数据的一个子集

1.3.2 数据元素和数据对象的关系

  • 数据元素:组成数据的基本单位
    • 与数据之间的关系:是集合中的个体
  • 数据对象:性质相同的数据元素的集合
    • 与数据之间的关系:是集合中的子集

1.3.3 数据结构

概念:

  • 数据元素是不可孤立存在的,他们之前总是存在某种关系。数据元素相互之间存在的关系称为 结构

  • 是指相互之间存在一种或者多种特点的关系的数据元素集合

  • 或者说,数据结构是带带结构的数据元素的集合

包含的内容:

  • 数据之间的逻辑关系 —— 逻辑结构

  • 数据元素及其关系在计算机内存中的表示(又称为映像)—— 数据的物理结构或者存储结构

  • 数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现

1.3.4 数据结构的两个层次

1.3.4.1 逻辑结构

  • 描述数据元素之间的逻辑关系

  • 与数据的存储无关,独立于计算机

  • 是从具体问题抽象出来的数学模型

1.3.4.2 物理结构(存储结构)

  • 数据元素及其关系在计算机存储器中的结构(存储方式)

  • 是数据结构在计算机中的表示

1.3.4.3 两者之间关系

  • 存储结构是逻辑关系的映像与元素本身的映像

  • 逻辑结构是数据结构的抽象,存储结构是数据结构的实现

  • 两者综合起来建立了数据元素之间的结构关系

1.3.5 逻辑结构的种类

划分法一:

  1. 线性结构
    例如:线性表,栈,队列,串
  2. 非线性结构
    例如:树,图

划分法二:

  1. 集合结构
  2. 线性结构
  3. 树形结构
  4. 图形结构

1.3.6 存储结构的种类

四种基本的存储结构:

  • 顺序存储结构

    概念:
    一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示

  • 链式存储结构

    概念:
    用一组 任意 的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示

  • 索引存储结构(了解)

  • 散列存储结构(了解)

1.3.7 数据类型和抽象数据类型

1.3.7.1 数据类型

概念:

一组性质相同的值的集合 以及定义这个值集合上的一组操作的总称。

数据类型的作用:

  1. 约束变量和常量的取值范围
  2. 约束常量或常量的操作

1.3.7.2 抽象数据类型

概念:

是指一个数学模型以及定义在次数学模型上的一组操作。

包含:

  1. 由用户定义,从问题中抽象出数据模型
  2. 定义在数据模型上的一组抽象运算
  3. 不考虑计算机内的具体存储结构与运算的具体实现算法

抽象数据类型的形式定义:
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第6张图片

一个抽象数据类型的定义格式:
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第7张图片
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第8张图片

其中:

  • 数据对象、数据关系的定义用伪代码来描述
  • 基本操作的定义格式为:
    1. 基本操作名(参数表)
      在这里插入图片描述
    2. 初始条件:<初始条件描述>
      在这里插入图片描述
    3. 操作结果:<操作结果描述>
      在这里插入图片描述

1.4 算法与算法分析

1.4.1 算法的定义

对特定问题求解方法和步骤的一种描述,它是指令的有限序列,其中每个指令表示一个或多个操作

1.4.2 算法的描述

  • 自然语言
  • 流程图(传统流程图、NS流程图)
  • 伪代码(类语言)
  • 程序代码(C、Java)

1.4.3 算法与程序

【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第9张图片

程序 = 数据结构 + 算法

1.4.4 算法的特性

  1. 有穷性
    在这里插入图片描述
  2. 确定性
    在这里插入图片描述
  3. 可行性
    在这里插入图片描述
  4. 输入
    在这里插入图片描述
  5. 输出
    在这里插入图片描述

1.4.5 算法设计的要求

  • 正确性
    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第10张图片
  • 可读性
    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第11张图片
  • 健壮性
    【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第12张图片
  • 高效性
    在这里插入图片描述

1.4.6 算法时间效率的度量

依据算法编制的程序在计算机上执行所消耗的时间来度量
两种方法:

  1. 事后统计(将算法实现,测算其时间和空间的开销)

  2. 事前分析(估算)

事前分析法,概念:
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第13张图片
在这里插入图片描述
时间复杂度:
在这里插入图片描述

1.4.7 分析算法时间复杂度的基本方法

【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第14张图片
在这里插入图片描述
例子:
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第15张图片
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第16张图片

几个概念:

  • 最坏时间复杂度:
    在这里插入图片描述
  • 平均时间复杂度:
    在这里插入图片描述
  • 最好时间复杂度:
    在这里插入图片描述

在这里插入图片描述

1.4.8 算法时间效率的比较

在这里插入图片描述
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第17张图片
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第18张图片
时间复杂度T(n)按数量级递增顺序为:
在这里插入图片描述

1.4.9 渐进空间复杂度

空间复杂度:算法所需存储空间的度量
【数据结构与算法-入门学习】看这一篇就够了(持续更新)_第19张图片
算法要占据的空间

  • 算法本身要占据的空间。输入/输出,指令,常数,变量等;
  • 算法要使用的辅助空间


你可能感兴趣的:(数据结构,数据结构,算法,面试)