JS之數(shù)據(jù)結構與算法
前言
數(shù)據(jù)結構是計算機存儲、組織數(shù)據(jù)的方式,算法是系統(tǒng)描述解決問題的策略。了解基本的數(shù)據(jù)結構和算法可以提高代碼的性能和質量。
也是程序猿進階的一個重要技能。
手擼代碼實現(xiàn)棧,隊列,鏈表,字典,二叉樹,動態(tài)規(guī)劃和貪心算法
1.數(shù)據(jù)結構篇
1.1 棧
棧的特點:先進后出
1.2 隊列
隊列:先進先出
?
1.3 鏈表
鏈表:存貯有序元素的集合,
但是不同于數(shù)組,每個元素是一個存貯元素本身的節(jié)點和指向下一個元素引用組成
要想訪問鏈表中間的元素,需要從起點開始遍歷找到所需元素
1.4 字典
字典:類似對象,以key,value存貯值
1.5 二叉樹
特點:每個節(jié)點最多有兩個子樹的樹結構
2.算法篇
2.1 冒泡算法
冒泡排序,選擇排序,插入排序,此處不做贅述,請戳 排序
2.2 斐波那契
特點:第三項等于前面兩項之和
2.3 動態(tài)規(guī)劃
特點:通過全局規(guī)劃,將大問題分割成小問題來取最優(yōu)解
案例:最少硬幣找零
美國有以下面額(硬幣):d1=1, d2=5, d3=10, d4=25
如果要找36美分的零錢,我們可以用1個25美分、1個10美分和1個便士( 1美分)
2.4 貪心算法
特點:通過最優(yōu)解來解決問題
用貪心算法來解決2.3中的案例