摘要:首先說下算法對(duì)于前端的作用和應(yīng)用作用不用說了提高效率和性能應(yīng)用目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。
首先說下算法對(duì)于前端的作用和應(yīng)用
作用:不用說了提高效率和性能
應(yīng)用:目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。,自己買的哭著也要讀完,不扯了,直接說下現(xiàn)在已經(jīng)應(yīng)用的兩個(gè)地方
1 trie樹結(jié)構(gòu),對(duì)于后端扁平化數(shù)據(jù)轉(zhuǎn)樹形結(jié)構(gòu)適用于前端的應(yīng)用,終于把遞歸改成動(dòng)規(guī)了
2 動(dòng)態(tài)規(guī)劃在前端瀑布流中的應(yīng)用
第一點(diǎn)我也是看了這篇博客才下定決心邁向算法大坑的,具體不多說直接附上地址
http://www.cnblogs.com/ypinch...
第二點(diǎn)的動(dòng)態(tài)規(guī)劃參考以下博客,其中說的非常清晰,我主要是列舉下對(duì)于此篇介紹中已實(shí)現(xiàn)的js,做 空間復(fù)雜度優(yōu)化的代碼,不足之處請(qǐng)指出
https://segmentfault.com/a/11...
首先我是按照數(shù)據(jù)的倒退圖里面以物品數(shù)組作為外層數(shù)組,背包容量作為內(nèi)層數(shù)組的形式寫的js(按照?qǐng)D的推導(dǎo)順序)
1 用來生成隨機(jī)大小的物品重量和價(jià)值數(shù)組
function getNum() { return parseInt(Math.random()*100+1); } function getArr(size) { var arr = []; for (var i = 0;i2實(shí)現(xiàn)
function aaa(wight,value,all) { var startTime = new Date().getTime(); var returnList = []; for (var i = 0;i=0?nowV:0; fV = fV+(i>0&&returnList[i-1][lastW-1]?returnList[i-1][lastW-1]:0); var nV = i>0&&returnList[i-1][j]?returnList[i-1][j]:0; returnList[i][j] = Math.max(fV,nV); } } var endTime = new Date().getTime(); return returnList[wight.length-1][all-1]+"耗時(shí):"+(endTime-startTime)+"ms"; } console.log(aaa(weight,value,V)); } 這種方式需要構(gòu)建龐大的二維緩存數(shù)組(用來把每次的最優(yōu)解存下),這一步完全可以優(yōu)化成只構(gòu)建上一步的最優(yōu)解供給下一次使用
function bbb(wight,value,all) { var startTime = new Date().getTime(); var returnList = []; var returnList_prev = []; var flag = true; for (var i = 0;i=0?nowV:0; fV = fV+(i>0&&returnList_prev[lastW-1]?returnList_prev[lastW-1]:0); var nV = i>0&&returnList_prev[j]?returnList_prev[j]:0; returnList[j] = Math.max(fV,nV); } else { var fV = lastW>=0?nowV:0; fV = fV+(i>0&&returnList[lastW-1]?returnList[lastW-1]:0); var nV = i>0&&returnList[j]?returnList[j]:0; returnList_prev[j] = Math.max(fV,nV); } } flag = !flag; } var endTime = new Date().getTime(); return returnList[all-1]+"耗時(shí):"+(endTime-startTime)+"ms"; } console.log(bbb(weight,value,V)); } 對(duì)比了兩次的結(jié)果時(shí)間分別是:
可以看到bbb方法明顯比aaa快了一倍之多
這里只是想把自己看書后應(yīng)用的東西分享下,大家有更好的方法也可以指正-。-
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/112724.html
摘要:首先說下算法對(duì)于前端的作用和應(yīng)用作用不用說了提高效率和性能應(yīng)用目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。 首先說下算法對(duì)于前端的作用和應(yīng)用 作用:不用說了提高效率和性能 應(yīng)用:目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。,自己買的哭著也要讀完,不扯了,直...
摘要:首先說下算法對(duì)于前端的作用和應(yīng)用作用不用說了提高效率和性能應(yīng)用目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。 首先說下算法對(duì)于前端的作用和應(yīng)用 作用:不用說了提高效率和性能 應(yīng)用:目前也是買了算法導(dǎo)論這本書,看得頭暈,各種數(shù)學(xué)知識(shí)需要返回去重新認(rèn)識(shí),哎,終于知道了以前學(xué)的東西總有用的。。。,自己買的哭著也要讀完,不扯了,直...
摘要:背包問題具體例子假設(shè)現(xiàn)有容量的背包,另外有個(gè)物品,分別為,,。最后,就是動(dòng)態(tài)規(guī)劃的思路了。而前個(gè)物體放入容量為的背包,又可以轉(zhuǎn)化成前個(gè)物體放入背包的問題。 背包問題具體例子:假設(shè)現(xiàn)有容量10kg的背包,另外有3個(gè)物品,分別為a1,a2,a3。物品a1重量為3kg,價(jià)值為4;物品a2重量為4kg,價(jià)值為5;物品a3重量為5kg,價(jià)值為6。將哪些物品放入背包可使得背包中的總價(jià)值最大? 首先...
閱讀 883·2021-11-22 12:04
閱讀 2087·2021-11-02 14:46
閱讀 613·2021-08-30 09:44
閱讀 2096·2019-08-30 15:54
閱讀 714·2019-08-29 13:48
閱讀 1586·2019-08-29 12:56
閱讀 3439·2019-08-28 17:51
閱讀 3278·2019-08-26 13:44