1: 为什么要学习算法?
内力很难短期速成, 需要拉长时间, 重要且不着急。
2: 我们常说的算法题, 其实是编程题。 题目类型是可以遍历的。
3: 算法和数据结构
4: 数据结构: 抛开语言的我们只讲数据结构:
1: 数组的的特点: 数据连续, 随机访问(根据地址访问第N 个数据) 跟数据在内存中的存储方式比较像。
数据 增, 删, 改, 查:
5: 数组的includes 方法的复杂度是: O(n);
6: 链表的数据结构: 非连续的存储
1 -> 2 -> 3 -> 4 -> 5 链表的数据结构是非连续的。
新增: O1 删除: O2 查找: On (但是调表可以优化这个复杂度)
应用场景:
1: react 的fiber 这个架构, 就是存储的虚拟Dom 树变成了链表。
2: vue 内部的keep-alive, 缓存的算法LRU (Least Recently Used) 用的就是链表;
7: 链表 + 数组组成了别的数据结构。
js 中的对象数据结构: { a: 1 } 哈希表
就是使用: 数据 + 链表来实现的。
缺点: 占用空间太大, 无序 (没有顺序)
8: 树形结构:
链表的分叉, 简化一下模型: 一棵树, 只有左子树和右子树 可以理解为二叉树。
二叉树;
多叉树;
多叉树的可以简化成二叉树, 但是二叉树又可以使用数组存储数据。 更加方便:
树形结构天生利用递归方法:
前端算法理解
最新推荐文章于 2024-02-27 11:36:51 发布
本文探讨了学习算法的重要性,指出算法题本质上是编程题,可以通过遍历解决。数组和链表是两种基本数据结构,各有优劣。数组提供随机访问,但增删改查效率较低;链表则在增删上更高效,查找效率可通过优化提高。链表在React的Fiber架构和Vue的LRU缓存中有所应用。数组和链表结合形成哈希表,虽然空间占用大且无序。最后,介绍了树形结构,特别是二叉树,以及其在数据存储和递归处理中的作用。
摘要由CSDN通过智能技术生成