眾所周知,JavaScript 是一門非常重要的編程語言,而算法又是程序員們必不可少的一部分。因此,一本好的javascript 經(jīng)典算法書籍對于javascript程序員們來說是尤為重要的。今天我就來分享幾本值得一讀的javascript經(jīng)典算法書籍。
第一本經(jīng)典算法書籍是《算法導(dǎo)論》第二版。這本書將各種算法分門別類地列出來,包括排序、數(shù)據(jù)結(jié)構(gòu)、圖、矩陣運(yùn)算等等。所有的算法都以偽代碼的形式呈現(xiàn), 方便閱讀者理解。正是這本經(jīng)典算法書籍讓許多程序員受益良多,它的啟發(fā)與幫助不僅僅只限于學(xué)生,還有眾多的工程師和研究人員。以下是這本書中快速排序算法的JavaScript實(shí)現(xiàn):
function quickSort(arr) {
if (arr.length<= 1) return arr;
let left = [], right = [], mid = [arr[0]];
for (let i = 1, len = arr.length; i< len; i++) {
if (arr[i]< mid[0]) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(mid.concat(quickSort(right)));
}
第二本好書是《數(shù)據(jù)結(jié)構(gòu)與算法JavaScript描述》。這本經(jīng)典算法書籍不僅深入淺出地闡述了各種搜索、排序算法,而且對于經(jīng)典的數(shù)據(jù)結(jié)構(gòu)如棧、隊列和樹等都有非常詳細(xì)的說明。以下是這本書中插入排序算法的JavaScript實(shí)現(xiàn):let insertSort = (array) =>{
let n = array.length;
if(n<= 1) return array;
for(let i = 1; i< n; i++) {
let val = array[i];
let j = i - 1;
for( ; j >= 0; j--) {
if(array[j] >val) {
array[j + 1] = array[j];
} else {
? break;
}
}
array[j + 1] = val;
}
return array;
}
第三本好書是《算法》第四版,它是一本非常全面的經(jīng)典算法書籍,包含了常見算法的源代碼以及詳細(xì)的圖示,雖然篇幅較長,但學(xué)完之后你就會對算法的實(shí)現(xiàn)有了更深刻的理解。以下是這本書中希爾排序算法的javascript實(shí)現(xiàn):let shellSort = (array) =>{
let n = array.length;
let h = 1;
while(h< Math.floor(n / 3)) h = h * 3 + 1;
while(h >= 1) {
for(let i = h; i< n; i++) {
for(let j = i; j >= h && array[j]< array[j - h]; j = j - h) {
[array[j], array[j - h]] = [array[j - h], array[j]];
}
}
h = Math.floor(h / 3);
}
return array;
}
以上就是我個人認(rèn)為的三本值得推薦的 Javascript 經(jīng)典算法書籍,希望它們能夠幫助你更好地掌握javascript算法!