We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题
一个程序=算法+数据结构,数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的,两者不可分割
因此,算法的设计和选择要同时结合数据结构,简单地说数据结构的设计就是选择存储方式,如确定问题中的信息是用数组存储还是用普通的变量存储或其他更加复杂的数据结构
针对上述,可以得出一个总结:不同的算法可能用不同的时间、空间或效率来完成同样的任务
关于算法的五大特性,有如下:
在前端领域中,数据结构与算法无法不在,例如现在的vue或者react项目,实现虚拟DOM或者Fiber结构,本质就是一种数据结构,如下一个简单的虚拟DOM:
vue
react
DOM
Fiber
{ type: 'div', props: { name: 'lucifer' }, children: [{ type: 'span', props: {}, children: [] }] }
vue与react都能基于基于对应的数据结构实现diff算法,提高了整个框架的性能以及拓展性
diff
包括在前端javascript编译的时候,都会生成对应的抽象语法树AST,其本身不涉及到任何语法,因此你只要编写相应的转义规则,就可以将任何语法转义到任何语法,也是babel, PostCSS, prettier, typescript
javascript
AST
babel
PostCSS
prettier
typescript
除了这些框架或者工具底层用到算法与数据结构之外,日常业务也无处不在,例如实现一个输入框携带联想功能,如下:
如果我们要实现这个功能, 则可以使用前缀树,如下:
包括前端可能会做一些对字符串进行相似度检测,例如"每日一题"和"js每日一题"两个字符串进行相似度对比,这种情况可以通过“最小编辑距离”算法,如果a和b的编辑距离越小,我们认为越相似
a
b
日常在编写任何代码的都需要一个良好的算法思维,选择好的算法或者数据结构,能让整个程序效率更高
The text was updated successfully, but these errors were encountered:
No branches or pull requests
一、是什么
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制
也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出
如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题
一个程序=算法+数据结构,数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的,两者不可分割
因此,算法的设计和选择要同时结合数据结构,简单地说数据结构的设计就是选择存储方式,如确定问题中的信息是用数组存储还是用普通的变量存储或其他更加复杂的数据结构
针对上述,可以得出一个总结:不同的算法可能用不同的时间、空间或效率来完成同样的任务
二、特性
关于算法的五大特性,有如下:
三、应用场景
在前端领域中,数据结构与算法无法不在,例如现在的
vue
或者react
项目,实现虚拟DOM
或者Fiber
结构,本质就是一种数据结构,如下一个简单的虚拟DOM
:vue
与react
都能基于基于对应的数据结构实现diff
算法,提高了整个框架的性能以及拓展性包括在前端
javascript
编译的时候,都会生成对应的抽象语法树AST
,其本身不涉及到任何语法,因此你只要编写相应的转义规则,就可以将任何语法转义到任何语法,也是babel
,PostCSS
,prettier
,typescript
除了这些框架或者工具底层用到算法与数据结构之外,日常业务也无处不在,例如实现一个输入框携带联想功能,如下:
如果我们要实现这个功能, 则可以使用前缀树,如下:
包括前端可能会做一些对字符串进行相似度检测,例如"每日一题"和"js每日一题"两个字符串进行相似度对比,这种情况可以通过“最小编辑距离”算法,如果
a
和b
的编辑距离越小,我们认为越相似日常在编写任何代码的都需要一个良好的算法思维,选择好的算法或者数据结构,能让整个程序效率更高
参考文献
The text was updated successfully, but these errors were encountered: