前端:数据结构与算法

177 阅读3分钟

1数据结构-----数组

2数据结构-----栈

3数据结构-----树

4数据结构-----队列

5数据结构----链表

6数据结构-----散列表

7算法设计----递归

8算法设计-----分而治之算法

一、导读

找工作的过程中,经常被问道的一个问题是:会数据结构吗?简单的来几个算法题?当时自己处于一种懵懵的状态,我是谁?我在哪?工作的过程中用到过数据结构与算法吗?感觉面试造火箭,入职拧螺丝,问到我怀疑人生。

其实不然,数据结构与算法在工作中也经常用到,我们常见的数组、集合、排序和搜索算法、链表等都与工作息息相关,平时只是没具体的关注其中。

很多同学在看到数据结构与算法后会有一定的抵触心理,或许尝试去练习,但是被难倒,从而放弃了。一大部分原因是因为还不够了解学习的意义,或者没有掌握合理的学习方法,导致一直停滞不前。

在本文中,我就来分享我的学习数据结构与算法的一些心得

之后我也会对常见的数据类型进行分类整理,全方位的开始学习

1.1 初衷

促使我学习数据结构与算法:面试,提升自己面试的通过效率。初衷很简单也很现实。

1.2 如何去学习呢

  1. 了解数据结构常见的类型

    1. 推荐书籍:学习Javascript数据结构与算法
  2. 做题也是非常重要的,毕竟学习之后要学会运用。给大家推荐几个网站

    1. leetcode
    2. 牛客

二、了解数据结构的分类

数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等

1667981854(1).png

三、时间复杂度和空间复杂度

数据结构算法速查表

3.1 算法效率

算法效率是指算法执行的时间。分析算法效率主要从两个方面入手:时间效率和空间效率。时间效率就是时间复杂度,空间效率就是空间复杂度

3.2 时间复杂度

时间复杂度是一个函数,它定性描述该算法的运行时间。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数

image.png

时间复杂度是指执行算法所需要的计算工作量。常见的时间复杂度有:

  • O(1): Constant Complexity: Constant 常数复杂度
  • O(log n): Logarithmic Complexity: 对数复杂度
  • O(n): Linear Complexity: 线性时间复杂度
  • O(n^2): N square Complexity 平⽅方
  • O(n^3): N square Complexity ⽴立⽅方
  • O(2^n): Exponential Growth 指数
  • O(n!): Factorial 阶乘

3.3 空间复杂度

  • 空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度
  • 空间复杂度算的是变量的个数