算法

简介

算法是用系统的方法来描述解决问题的策略机制,算法本质上是利用逻辑来解决问题的定律,每一个算法都有特定的条件和步骤,而判断算法的优劣是通过时间复杂度空间复杂度来衡量。

描述算法的方法有多种,常用的有自然语言、结构化流程图、伪代码和PAD图等,其中最普遍的是流程图。

在程序中,程序运行消耗的就是内存与时间,要想让程序更高效,我们必须要学习算法!

作为一名前端工程师,更倾向于js算法的实现。

分类

算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。

算法可以宏泛的分为三类:

  1. 有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
  2. 有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
  3. 无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

算法规律需要无数次的尝试与总结,目前已有的算法如下: 递推法、递归法、穷举法、贪心算法、分治法、动态规划法、迭代法、分支界限法、回溯法等等。