1.数据结构与算法概论

梦想的初衷 提交于 2019-12-06 14:14:11

1.数据结构

1.1引入

  • 为什么要学习数据结构?

      随着计算机的不断发展,计算机处理的数据不再是单纯的数值数据,而更多的是非数值数据

如果仅在程序设计上花费功夫,而不去考虑数据的组织,那么,对大量的数据处理将会十分低效,

有时甚至无法进行。(程序=数据结构+算法

1.2数据结构的定义

数据结构(data structure):一种在计算机上能有效储存组织使用资料的方法。

  • 数据的逻辑结构(数据之间的内在联系)
  • 数据的储存结构(数据的储存方式)
  • 数据的运算集合(定义在数据的逻辑结构之上,具体实现依赖于数据的储存结构)

数据结构讨论的是数据的逻辑结构储存方式以及相关操作

1.3常见的数据结构

  • 栈(Stack)
  • 队列(Queue)
  • 数组(Array)
  • 链表(Linked list)
  • 数(Tree)
  • 图(graph)
  • 堆(heap)
  • 散列表(hash table)

2.算法

2.1算法的定义

算法(algorithm):适用于计算机实现的解决问题的方法。

算法的5个特征

  • 有限性:算法的执行必须在有限步内结束。
  • 确定性:算法的每一个步骤必须是确定的、无二义性的。
  • 输入:算法可以有0或多个输入。
  • 输出:算法有一定的输出结果
  • 可行性:算法中的运算都必须是可以实现的。

2.2算法的时间和空间复杂度

 算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。
算法的空间复杂度一般考虑的是算法中除了存储数据本身以外的附加存储空间,它得度量方法和算法的时间复杂度相似。

2.3常见的算法

1.基本算法

枚举

搜索

  • 深度优先搜索
  • 广度优先搜索
  • 启发式搜索
  • 遗传算法

2.数据结构算法

3.数论与代数算法

4.计算几何算的法

  • 凸包算法

5.图论的算法

  • 哈夫曼编码
  • 树的遍历
  • 最短路径算法
  • 最小生成树算法
  • 最小树形图
  • 网络流算法
  • 匹配算法
  • 分团问题

6.动态规划

7.其他

  • 数值分析
  • 加密算法
  • 排序算法
  • 检索算法
  • 随机化算法
  • 并行算法

3.数据结构与算法的关系

在《算法》一书中有这样一段话“我们关注的大多数算法需要适当的组织数据,而为了组织数据就产生了数据结构,数据结构也是计算机科学研究的核心对象,它和算法的关系非常密切。在本书中,我们的观点是数据结构是算法的副产品或结果,因此理解算法必须学习数据结构”。

在处理问题时,需要先将一些数据进行存储,不同的存储方式会占用不同的存储空间,正确的数据结构选择可以提高算法的效率。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!