乐趣区

关于前端:为什么要学习数据结构和算法

数据结构 & 算法

原文链接:https://note.noxussj.top/?source=sifo

为什么要学习数据结构和算法?

它对咱们开发和程序有什么帮忙?

像咱们平时都是应用框架和库进行开发的我的项目的,咱们也不太可能去批改库和框架的外部代码,那咱们应该如何优化咱们的程序,要从哪方面动手呢?能够通过数据处理的操作进行优化,数据处理就会波及到数据结构和算法的相干内容。

咱们的程序个别都是由数据结构和算法联合失去的一个产物(数据结构 + 算法 = 程序),数据结构为算法提供服务,算法围绕数据结构操作。

常见的数据结构

有序数据结构

  • 数组
  • 队列
  • 链表

无序数据结构

  • 汇合
  • 字典

树形数据结构

常见的算法

链表

  • 遍历链表
  • 删除链表节点
  • 双指针

树、图

  • 深度优先搜寻
  • 广度优先搜寻
  • 递归

数组

  • 冒泡排序
  • 抉择排序
  • 插入排序
  • 归并排序
  • 疾速排序
  • 顺序搜索
  • 二分搜寻

常见的算法设计思维

  • 分而治之
  • 动静布局
  • 贪婪
  • 回溯

什么是算法?
算法(Algorithm)是指用来操作数据、解决程序问题的一组办法。对于同一个问题,应用不同的算法,兴许最终失去的后果是一样的,但在过程中耗费的资源和工夫却会有很大的区别。

那么咱们应该如何去掂量不同算法之间的优劣呢?

次要还是从算法所占用的「工夫」和「空间」两个维度去考量。

  • 工夫维度:是指执行以后算法所耗费的工夫,咱们通常用「工夫复杂度」来形容
  • 空间维度:是指执行以后算法须要占用多少内存空间,咱们通常用「空间复杂度」来形容

因而,评估一个算法的效率次要是看它的工夫复杂度和空间复杂度状况。然而,有的时候工夫和空间却又是「鱼和熊掌」,不可兼得的,那么咱们就须要从中去取一个平衡点。

可是,咱们的代码都还没有运行起来,我怎么能预知到代码运行所耗费的工夫和空间呢?因为运行环境和输出规模的影响,代码的相对执行工夫是无奈预计的。然而咱们却能够预估出代码的基本操作执行次数和额定占用的空间。

接下来会别离介绍一下「工夫复杂度」和「空间复杂度」的计算形式。


原文链接:https://note.noxussj.top/?source=sifo

退出移动版