在过去的几年中,得益于Node.js的兴起,JavaScript越来越广泛地用于服务器端编程。鉴于JavaScript语言已经走出了浏览器,程序员发现他们需要更多传统语言(比如C++和Java)提供的工具。这些工具包括传统的数据结构(如链表,栈,队列,图等),也包括传统的排序和查找算法。本文主要是总结什么情况下使用何种数据结构较好,并没有细讲里面的原理和实现方式,仅仅提供给阅读过《数据结构和算法》的同学作为总结和参考笔记,如果未细究过数据结构和算法的同学,本文也可以作为一个方向,希望能引导你去深究数据结构和算法。
数据结构和算法对于很多前端工程师来说,一直觉得是可有可无的,但其实不然,个人觉得,前端工程师其实是最需要重视数据结构和算法的人,因为前端所做的东西是用户访问网站第一眼看到的东西,特别在移动浪潮到来之后,对用户体验越来越高,对前端提出了更高的要求,面对越来越复杂的产品,需要坚实的数据结构和算法基础才能驾驭。 如果没有学习过计算机科学的程序员,当我们在处理一些问题时,比较熟悉的数据结构就是数组,数组无疑是一个很好的选择。但很多时候,对于很多复杂的问题,数组就显得太过简陋了,当学习了数据结构和算法之后,对于很多编程问题,当想到一个合适的数据结构后,设计和实现解决这些问题的算法就手到擒来。
相关讲解细分: 数据结构:列表、栈、队列、链表、字典、散列、图和二叉查找树 排序算法:冒牌排序、选择排序、插入排序、希尔排序、归并排序和快速排序 查找算法:顺序查找和二分查找
在日常生活中,人们经常使用列表:待办事项列表、购物清单、最佳十名榜单等等。而计算机程序也在使用列表,在下面的条件下,选择列表作为数据结构就显得尤为有用: 数据结构较为简单 不需要在一个长序列中查找元素,或者对其进行排序 反之,如果数据结构非常复杂,列表的作用就没有那么大了。
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。想象一下,我们平常在饭馆见到的一摞盘子就是现实世界常见的栈的例子,只能从最上面取盘子,盘子洗干净后,也只能放在最上面。栈被称为一种后入先出的数据结构。是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快。 使用条件:
只要数据的保存满足后入先出或先进后出的原理,都优先考虑使用栈
队列也是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。想象一下,我们在银行排队,排在最前面的人第一个办理业务,而后面来的人只能排在队伍的后面,直到轮到他们为止。 使用条件:
只要数据的保存满足先进先出、后入后出的原理,都优先考虑使用队列 常见应用场景:
队列主要用在和时间有关的地方,特别是操作系统中,队列是实现多任务的重要机制 消息机制可以通过队列来实现,进程调度也是使用队列来实现
https://www.cnblogs.com/roam/p/7423805.html
## 生成一个适合你的列表 - 项目 - 项目 - 项目 1. 项目1 2. 项目2 3. 项目3 - [ ] 计划任务 - [x] 完成任务 ## 创建一个表格 一个简单的表格是这么创建的: 项目 | Value -------- | ----- 电脑 | $1600 手机 | $12 导管 | $1 ### 设定内容居中、居左、居右 使用`:---------:`居中 使用`:----------`居左 使用`----------:`居右 | 第一列 | 第二列 | 第三列 | |:-----------:| -------------:|:-------------| | 第一列文本居中 | 第二列文本居右 | 第三列文本居左 | ### SmartyPants SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如: | TYPE |ASCII |HTML |----------------|-------------------------------|-----------------------------| |Single backticks|`'Isn't this fun?'` |'Isn't this fun?' | |Quotes |`"Isn't this fun?"` |"Isn't this fun?" | |Dashes |`-- is en-dash, --- is em-dash`|-- is en-dash, --- is em-dash| ## 创建一个自定义列表 Markdown : Text-to-HTML conversion tool Authors : John : Luke ## 如何创建一个注脚 一个具有注脚的文本。[^2] [^2]: 注脚的解释 ## 注释也是必不可少的 Markdown将文本转换为 HTML。 *[HTML]: 超文本标记语言 ## KaTeX数学公式 您可以使用渲染LaTeX数学表达式 [KaTeX](https://khan.github.io/KaTeX/): Gamma公式展示 $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$ 是通过欧拉积分 $$ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. $$ > 你可以找到更多关于的信息 **LaTeX** 数学表达式[here][1]. ## 新的甘特图功能,丰富你的文章 ```mermaid gantt dateFormat YYYY-MM-DD title Adding GANTT diagram functionality to mermaid section 现有任务 已完成 :done, des1, 2014-01-06,2014-01-08 进行中 :active, des2, 2014-01-09, 3d 计划一 : des3, after des2, 5d 计划二 : des4, after des3, 5d 关于 甘特图 语法,参考 这儿,可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五这将产生一个流程图。:
链接 长方形 圆 圆角长方形 菱形 关于 Mermaid 语法,参考 这儿,我们依旧会支持flowchart的流程图:
Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no 关于 Flowchart流程图 语法,参考 这儿.如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入, 继续你的创作。