前端必会算法

前端算法

1. 线性数据结构之数组

1. 一维数据结构:(线性数据结构)
2. 线性的数据结构强调存储于顺序
3. 数组特性:
  	1. 存储在物理空间上是连续的
  	2. 底层的数组长度是不可变的
  	3. 数组的变量,指向了数组的第一个元素的位置。
       - 数组 a  = {1,2,3,4,5};
       - a[1],a[2],a[3]  方括号表示存储地址的偏移
       - 操作系统小知识:通过偏移查询数据性能最好
4. 数组有一个很大的特性:数组定长
  	1. 内存的分配都是操作系统给分配的
  	2. 在运行中不要发生数组扩容的情况,因为会消耗性能 
  1. 数组的优缺点:

    1. 优点:查询性能好,指定查询某个位置。

    2. 缺点

      1:因为空间必须得是连续的,所以如果数组比较大,当系统的空间碎片较多的时候,容易存不下

      空间碎片:我们用的电脑上的每一个程序,每一个软件,都需要声明变量,声明的变量就需要占用系统的存储空间当声明的时候,系统都是按照顺序分配空间,但是有可能某个位置不再用了 ,清空了,那么第二个位置就会空出来,此时有空位,按理说有些长度的数组可以放得下,但是数组必须得是连续的,但是存储空间的位置不是连续的,这种小的空闲的空间就称之为空间碎片

      但是系统为了能够使用户能够存下,就会整理空间,也就会耗费CPU,耗费性能,所以要避免数组过大

      2:因为数组的长度是固定的,所以数组的内容难以被添加和删除。

2. 线性数据结构之链表

​ 一般我们所说的链表指的就是单链表

  1. 链表的特点:

    1. 空间上是不连续的。
      2. 每存放一个值,都要多开销一个引用空间
  2. 链表的优缺点:

    优点:

    1. 只要内存足够大,就能存的下,不用担心空间碎片的问题。

    2. 链表的添加和删除非常的容易

    缺点:

    1. 查询速度慢,(指的是查询某个位置)

    2. 链表每一个节点都需要创建一个指向next的引用,浪费一些空间

      但是当节点内数据越多的时候,这部分多开销的内存影响越少(相对于百分比来说)。

    3. 每一个节点只记录自己和下一个节点。

  3. 如果想传递一个链表,必须传递链表的根节点,每一个节点,都认为自己是根节点。每一个节点都认为自己是链表的起始。

  4. 如何创建链表:

    1. 首先要定义链表的结构

      function Node(value){this.value = value;this.next = null;
      
      }
      
      var a = new Node(1);
      
      var b = new Node(2);
      
      var c = new Node(3);
      
      var d = new Node(4);
      
      a.next = b;
      
      b.next = c;
      
      c.next = d;
      
      d.next = null;
      console.log(a.value);
      console.log(a.next.value);
      console.log(a.next.next.value);
      console.log(a.next.next.next.value);
      

后面持续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值