《JavaScript算法—基本原理与代码实现》

简介: 《JavaScript算法—基本原理与代码实现》

前言

最近刚买这本书,写的非常好,语言浅显易懂,相比于那些经典书比如《算法与数据结构》的晦涩难懂,这本书使用前端最习惯的JS语言做示例代码,看起来一点都不费劲。而且算法解释也非常到位,是一本非常适合前端开发深入学习算法的书籍

我自己在阅读的时候有一个习惯,就是边读边敲代码,对算法进行反复拆解和验证,这样能让我更加透彻的理解算法的设计,以及一些边界条件的取值正因为我的读书习惯,我在阅读此书的过程中,发现了一些小小的勘误,对我的理解产生了一些干扰。

而我自己本身会在书上做笔记,记录下每一处存疑的地方,避免下一次阅读时再次陷入疑惑后来我想,鉴于作者以及出版社的影响力,这本书应该会很畅销,那么我的笔记是不是也可以帮助到其他读者呢?

于是就产生了这本勘误小册,我希望我的读书笔记一定程度上也能帮助到各位读者。我会持续更新下去,直到把这本书看完为止。


勘误

P1-50

P18:插入排序,算法边界错误

while循环里参数边界错误;回填坑位时下标j改为j+1image.png修正代码:

constinsertSort(array)
let n = array.length;
for (let i = 1; i < n; i++)
let target = arraylil;
let j = i - 1;
while (j >= 0 & array[j] > target){
array[j+1] = array[jl;
j--;
}
}
array[j+1] = target;

P19:希尔排序,图示数字错误

image.png


P24:归并排序,mergeArray参数错误


image.pngP30:快速排序-左右指针法,示例图数字错误

image.png


P31:快速排序- 挖坑法

image.png

两个问题:

1.代码实现与文宁描述不一致

上面文字描述里说选取第一个元素作为pivot,而代码里却选了最后一个

2.写法可读性优化

partition函数最后return的时候,left和right是相等的,理论上返回任意一个都可以,但是此处明显是对right进行操作的,那么此时返回right在上下文连贯性的上一步“array[right] = pivot”,上会更加友好,更加易于理解

P33:快速排序-前后指针法,示例图数字顺序错误

image.png

P37:计数排序数组长度错误

这里一共6个数,去重后只有5个,所以只需要5个桶。image.png

目录
相关文章
|
1月前
|
算法 JavaScript 前端开发
LZH 算法的模拟实现,JavaScript 版本
LZH 算法的模拟实现,JavaScript 版本
13 0
|
3月前
|
算法 JavaScript 前端开发
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(下)
至于分发?我们可以参考一下市面上已有的一些概念做一下对比,下面是笼统的一个网络服务器的TPS预估值,也就是说彩票服务器在1秒内可以处理的最大请求数:
|
3月前
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
5天前
|
算法 JavaScript 前端开发
三个js算法
三个js算法
8 2
|
5天前
|
算法 JavaScript
js的两个常用算法
js的两个常用算法
5 1
|
11天前
|
JavaScript 前端开发 算法
【JavaScript技术专栏】使用JavaScript实现常见算法
【4月更文挑战第30天】本文介绍了如何使用JavaScript实现常见算法,包括排序、搜索和图算法。首先,通过JavaScript的`sort`方法讨论了排序算法,以快速排序为例展示了自定义排序的实现。接着,探讨了二分查找这一高效的搜索算法,并提供了实现代码。最后,解释了深度优先搜索(DFS)图算法,并给出了在JavaScript中的实现。理解并运用这些算法能有效提升编程能力。
|
2月前
|
算法 JavaScript 前端开发
游戏物理系统 - 如何在JavaScript中实现基本的碰撞检测算法?
在JavaScript中实现2D矩形碰撞检测,常用AABB方法,适合简单游戏。创建Rectangle类,包含位置和尺寸属性,并定义`collidesWith`方法检查两矩形是否相交。通过比较边界位置判断碰撞,当四条边界条件均满足时,认定发生碰撞。基础算法适用于初级需求,复杂场景可采用更高级的碰撞检测库。
14 1
|
2月前
|
缓存 JavaScript 算法
Vue.js中的diff算法:让虚拟DOM更高效
Vue.js中的diff算法:让虚拟DOM更高效
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元
深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元
36 0
|
4月前
|
机器学习/深度学习 算法 搜索推荐
搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战
搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战