前端算法理解

本文探讨了学习算法的重要性,指出算法题本质上是编程题,可以通过遍历解决。数组和链表是两种基本数据结构,各有优劣。数组提供随机访问,但增删改查效率较低;链表则在增删上更高效,查找效率可通过优化提高。链表在React的Fiber架构和Vue的LRU缓存中有所应用。数组和链表结合形成哈希表,虽然空间占用大且无序。最后,介绍了树形结构,特别是二叉树,以及其在数据存储和递归处理中的作用。
摘要由CSDN通过智能技术生成
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: 树形结构:
   链表的分叉,  简化一下模型:  一棵树,  只有左子树和右子树  可以理解为二叉树。

   二叉树;
   多叉树;
   多叉树的可以简化成二叉树,  但是二叉树又可以使用数组存储数据。 更加方便:  
   树形结构天生利用递归方法:  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值