Learn Algorithms With Javascript - 基于 Js 进行算法学习
基于 javascript
学习并实现常用的经典算法,欢迎对算法和数学感兴趣的 Js 开发者参与,一起学习共同进步。
算法实现
- 排序
- 查找
- 顺序查找 search/sequence-search.js
- 二分查找实现 search/binary-search.js
- 插值查找 search/insert-value-search.js
- 斐波那契查找 search/fibonacci-search.js
- 哈希查找 search/hash-search.js
- 数据结构 DataStructures
- 树
- 图
算法分析
图文形式整理归纳该部分内容,需花费大量的时间和精力,且网上关于算法分析的高质量资料也非常多。因此,暂不对此节内容进行整理,可能的话,以后再不定期抽时间做相关补充。
数学基础
我们不一定有精力深入透彻的研究下列全部内容,但在算法分析开始前,概览下述内容绝对是非常有益的。
- 知识大纲
- 求和
- 求和公式及其性质
- 确定求和时间的界
- 离散数学内容
- 集合
- 关系
- 函数
- 图
- 树
- 计数与概率
- 计数
- 概率
- 离散随机变量
- 几何分布与二项分布
- 二项分布的尾部
- 矩阵
- 矩阵与矩阵运算
- 矩阵的基本性质
- 求和
- Javascript Math Object
- 常用数学术语中英文对照表
计划清单
- 最大子数组问题
- 散列表
- 广度优先搜索
总能找到最近的node
图由节点和边组成,node and edge - 狄克斯特拉算法
- 贝尔曼·福德算法
- 贪婪算法
- 旅行商问题
- NP完全问题
- 动态规划
- 01背包
- 最长公共子串
- 最长公共子序列
- 费曼算法
- K最近邻算法
- 朴素贝叶斯分类器
- 二叉树、 B树,红黑树,堆,伸展树
- 反向索引
- 傅里叶变换
- MapReduce
- Apache Hadoop
- Simhash
- Diffie-Hellman
参考资料
1. Website
- Better Explained —— Learn math without memorization. No cramming.
- Commoncraft —— Our Product is Explanation.
- GeeksforGeeks —— A computer science portal for geeks.
2. Book
- 算法图解 —— 像小说一样有趣的算法入门书
- Algorithms —— 中文版书名:《算法概论》,将任何具有初等数学基础的人引入算法应用与研究殿堂的引路石。
- Algorithms Fourth Edition —— 算法第四版 algs4.cs.princeton.edu
- Introduction to Algorithms —— Thomas H.Cormen Charles E.Leiserson Ronald L.Rivest Clifford Stein
写在后面
关于本文如果您有任何建议或疑问请在下面留言交流,也可通过 Web前端高级工程师 群进行线上沟通。
Learn Algorithms With Javascript - 基于 Js 进行算法学习的更多相关文章
- JS做深度学习1——偶然发现与入门
JS做深度学习1--偶然发现与入门 不久前,我初次涉猎了Node.js,并且使用它开发了毕业设计的WEB模块,然后通过在Node中调用系统命令执行Python文件方式实现了深度学习功能模块的对接,Py ...
- JavaScript基于时间的动画算法
转自:https://segmentfault.com/a/1190000002416071 前言 前段时间无聊或有聊地做了几个移动端的HTML5游戏.放在不同的移动端平台上进行测试后有了诡异的发现, ...
- 常见排序算法基于JS的实现
一:冒泡排序 1. 原理 a. 从头开始比较相邻的两个待排序元素,如果前面元素大于后面元素,就将二个元素位置互换 b. 这样对序列的第0个元素到n-1个元素进行一次遍历后,最大的一个元素就“沉”到序列 ...
- 基于JS实现归并排序算法
/*********************************************JS归并排序************************************************ ...
- 阅读:重新介绍 JavaScript(JS教程)
这篇文章是记录自己阅读重新介绍 JavaScript(JS 教程)的记录和个人体会 在线调试代码工具:https://codepen.io/pen 引言 分歧根源:名字Javascript和Java有 ...
- [翻译]Review——Learn these core JavaScript concepts in just a few minutes
Learn these core JavaScript concepts in just a few minutes(只需几分钟即可学习这些核心JavaScript概念) 原文地址:https://m ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- Breach - HTML5 时代,基于 JS 编写的浏览器
Breach 是一款属于 HTML5 时代的开源浏览器项目,,完全用 Javascript 编写的.免费.模块化.易于扩展.这个浏览器中的一切都是模块,Web 应用程序在其自己的进程运行.通过选择合适 ...
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...
随机推荐
- [转]本地 Windows 计算机密码登录 登录 腾讯云 Linux 实例
本文转自:https://cloud.tencent.com/document/product/213/5436? 登录工具 使用 远程登录软件 ,采用密码登录 Linux 实例(本例中选择使用 Pu ...
- Oracle空表导出
执行: Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 执行该命令后产 ...
- [日常] Go语言圣经-匿名函数习题2
练习5.13: 修改crawl,使其能保存发现的页面,必要时,可以创建目录来保存这些页面.只保存来自原始域名下的页面.假设初始页面在golang.org下,就不 要保存vimeo.com下的页面. p ...
- springboot中使用mybatis之mapper
Spring Boot中使用MyBatis传参方式:使用@Param@Insert("INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})& ...
- EF CodeFirst(三) 并发处理
并发分为两种,一种叫做悲观并发,一种叫乐观并发. 名字挺文艺 悲观并发 悲观并发是什么呢? 就拿我们常用的代码版本控制来说. 有一个文档,A和B都要 获取这个文档并进行修改, 如果当A在读取这个文档数 ...
- JS 作用域 p1
引用<你不知道的JavaScript>中的话,如下: 负责收集并维护由所有生命的标识符(变量)组成的一系列查询并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限. 那么作用 ...
- ubuntu16.04安装matlab2016b
一.matlab2016b版本下载 在ubuntu下安装matlab2016b,需要三个文件,分别是:Matlab+2016b+Linux64+Crack.rar .R2016b_glnxa64_dv ...
- Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版
Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版 百度很多博客都不详细,弄了半天才把 Spring Boot 多模块项目构建开发整的差不多,特地重新创建配置,记录 ...
- Android Fragment的用法(二)
如果你经常使用平板电脑,应该会发现很多的平板应用现在都采用的是双页模式(程序会在左侧的面板上显示一个包含子项的列表,在右侧的面板上显示内容),因为平板电脑的屏幕足够大,完全可以同时显示下两页的内容,但 ...
- Hive 锁 lock
Hive + zookeeper 可以支持锁功能 锁有两种:共享锁.独占锁,Hive开启并发功能的时候自动开启锁功能 1)查询操作使用共享锁,共享锁是可以多重.并发使用的 2)修改表操作使用独占锁,它 ...