前言
最近刚买这本书,写的非常好,语言浅显易懂,相比于那些经典书比如《算法与数据结构》的晦涩难懂,这本书使用前端最习惯的JS语言做示例代码,看起来一点都不费劲。而且算法解释也非常到位,是一本非常适合前端开发深入学习算法的书籍
我自己在阅读的时候有一个习惯,就是边读边敲代码,对算法进行反复拆解和验证,这样能让我更加透彻的理解算法的设计,以及一些边界条件的取值正因为我的读书习惯,我在阅读此书的过程中,发现了一些小小的勘误,对我的理解产生了一些干扰。
而我自己本身会在书上做笔记,记录下每一处存疑的地方,避免下一次阅读时再次陷入疑惑后来我想,鉴于作者以及出版社的影响力,这本书应该会很畅销,那么我的笔记是不是也可以帮助到其他读者呢?
于是就产生了这本勘误小册,我希望我的读书笔记一定程度上也能帮助到各位读者。我会持续更新下去,直到把这本书看完为止。
勘误
P1-50
P18:插入排序,算法边界错误
while循环里参数边界错误;回填坑位时下标j改为j+1修正代码:
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:希尔排序,图示数字错误
P24:归并排序,mergeArray参数错误
P30:快速排序-左右指针法,示例图数字错误
P31:快速排序- 挖坑法
两个问题:
1.代码实现与文宁描述不一致
上面文字描述里说选取第一个元素作为pivot,而代码里却选了最后一个
2.写法可读性优化
partition函数最后return的时候,left和right是相等的,理论上返回任意一个都可以,但是此处明显是对right进行操作的,那么此时返回right在上下文连贯性的上一步“array[right] = pivot”,上会更加友好,更加易于理解
P33:快速排序-前后指针法,示例图数字顺序错误
P37:计数排序数组长度错误
这里一共6个数,去重后只有5个,所以只需要5个桶。