数据结构与算法是一门大课,这里蜻蜓点水一样把学到的知识过一下,内容包括简介、理解、数据结构、算法。

一、简介

算法是计算方法,解决问题之道,有光子计算、DNA 计算、量子计算等等

数据结构是对 ADT 的具体实现

ADT 对数据实现“逻辑”层次和“物理”层次的分离

数据结构 + 算法 = 程序

二、理解

1. 抽象的例子

用“逻辑 Logical”和“物理 Physical”两种层次看待汽车

  • 修理工看汽车看到的是“物理”层次,通过机械原理等实现方向盘、油门等接口
  • 老司机看汽车看到的是“逻辑”层次,使用方向盘、油门等接口做其他事情

**
先要理解这两个东西

  1. 在编程中,编程语言提供了“控制结构”和“数据类型”
  2. 抽象数据类型(ADT:Abstract Data Type)是对数据处理的逻辑描述

2. 抽象的角度看 ADT

用“逻辑 Logical”和“物理 Physical”两种层次看待 ADT

  • 通过编程语言的“控制结构”和“数据类型”实现 各类 ADT 接口
  • 算法使用各类 ADT 接口做各种计算

3. 数据结构和 ADT 关系

同一ADT可以采用不同的数据结构来实现,采用程序设计语言的控制结构基本数据类型来实现ADT所提供的逻辑接口——属于ADT的“物理”层次

三、数据结构

线性结构

  • 栈(Stack):后进先出
  • 队列(Queue):先进先出
  • 双端队列(Deque):能够两端进、两端出
  • 无序表:无顺序的数据
  • 有序表:有顺序的数据
  • 映射(Map):常使用散列表(哈希表)

非线性结构

  • 树(Tree)
  • 堆(Heap)

四、算法

排序算法

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 谢尔排序
  5. 归并排序
  6. 快速排序

「@浪里淘沙的小法师」