奥一农场的网站开发,html类似wordpress,四川工程建设项目一般挂什么网站,黄冈网站建设设计一、是什么
算法#xff08;Algorithm#xff09;是指解题方案的准确而完整的描述#xff0c;是一系列解决问题的清晰指令#xff0c;算法代表着用系统的方法描述解决问题的策略机制
也就是说#xff0c;能够对一定规范的输入#xff0c;在有限时间内获得所要求的输出 …一、是什么
算法Algorithm是指解题方案的准确而完整的描述是一系列解决问题的清晰指令算法代表着用系统的方法描述解决问题的策略机制
也就是说能够对一定规范的输入在有限时间内获得所要求的输出
如果一个算法有缺陷或不适合于某个问题执行这个算法将不会解决这个问题
一个程序算法数据结构数据结构是算法实现的基础算法总是要依赖于某种数据结构来实现的两者不可分割
因此算法的设计和选择要同时结合数据结构简单地说数据结构的设计就是选择存储方式如确定问题中的信息是用数组存储还是用普通的变量存储或其他更加复杂的数据结构
针对上述可以得出一个总结不同的算法可能用不同的时间、空间或效率来完成同样的任务
二、特性
关于算法的五大特性有如下
有限性Finiteness一个算法必须保证执行有限步之后结束确切性Definiteness 一个算法的每一步骤必须有确切的定义输入Input一个算法有零个或多个输入以刻画运算对象的初始情况所谓零个输入是指算法本身给定了初始条件输出Output一个算法有一个或多个输出。没有输出的算法毫无意义可行性Effectiveness算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤即每个计算步骤都可以在有限时间内完成也称之为有效性
三、应用场景
在前端领域中数据结构与算法无法不在例如现在的vue或者react项目实现虚拟DOM或者Fiber结构本质就是一种数据结构如下一个简单的虚拟DOM
{type: div,props: {name: lucifer},children: [{type: span,props: {},children: []}]
}vue与react都能基于基于对应的数据结构实现diff算法提高了整个框架的性能以及拓展性
包括在前端javascript编译的时候都会生成对应的抽象语法树AST其本身不涉及到任何语法因此你只要编写相应的转义规则就可以将任何语法转义到任何语法也是babel PostCSS, prettier typescript
除了这些框架或者工具底层用到算法与数据结构之外日常业务也无处不在例如实现一个输入框携带联想功能如下 如果我们要实现这个功能 则可以使用前缀树如下 包括前端可能会做一些对字符串进行相似度检测例如每日一题和js每日一题两个字符串进行相似度对比这种情况可以通过“最小编辑距离”算法如果 a 和 b 的编辑距离越小我们认为越相似
日常在编写任何代码的都需要一个良好的算法思维选择好的算法或者数据结构能让整个程序效率更高