JS之数据结构与算法
前言
数据结构是计算机存储、组织数据的方式,算法是系统描述解决问题的策略。了解基本的数据结构和算法可以提高代码的性能和质量。
也是程序猿进阶的一个重要技能。
手撸代码实现栈,队列,链表,字典,二叉树,动态规划和贪心算法
1.数据结构篇
1.1 栈
栈的特点:先进后出
1.2 队列
队列:先进先出
1.3 链表
链表:存贮有序元素的集合,
但是不同于数组,每个元素是一个存贮元素本身的节点和指向下一个元素引用组成
要想访问链表中间的元素,需要从起点开始遍历找到所需元素
1.4 字典
字典:类似对象,以key,value存贮值
1.5 二叉树
特点:每个节点最多有两个子树的树结构
2.算法篇
2.1 冒泡算法
冒泡排序,选择排序,插入排序,此处不做赘述,请戳 排序
2.2 斐波那契
特点:第三项等于前面两项之和
2.3 动态规划
特点:通过全局规划,将大问题分割成小问题来取最优解
案例:最少硬币找零
美国有以下面额(硬币):d1=1, d2=5, d3=10, d4=25
如果要找36美分的零钱,我们可以用1个25美分、1个10美分和1个便士( 1美分)
2.4 贪心算法
特点:通过最优解来解决问题
用贪心算法来解决2.3中的案例