每天10个前端知识点:算法与数据结构

个人博客已上线,欢迎前去访问评论!
无媛无故 - wangchloe的个人博客


以下内容若有问题烦请即时告知我予以修改,以免误导更多人。


这篇真的写的相当好,我记得有一次见过bat的面试题是要把算法过程以柱状图形势展现。
十大经典排序算法总结(JavaScript描述)

面试算法实践与国外大厂习题指南

1. 查找算法

以有序数组查找定值为例

(1) 线性查找

循环遍历比较

eg: findInArr


(2) 二分法查找

从中间开始,往左右两边查找


二分法应用

掌握二分法的核心思想:从中间开始,往左右两边查找

  • 无序数组查找最小值

  • 二分法数组去重

  • 二分法数组排序(归并排序)

2. 排序算法

每天10个前端知识点:算法与数据结构_第1张图片
各种排序算法时间复杂度和空间复杂度表

(1) 交换排序

冒泡排序

每一轮循环内比较相邻的两个数,如果后一个比前一个小,互换位置。

  • 时间复杂度:O(n^2)

快速排序

采用二分法,取出中间数,数组每次和中间数比较,小的放到左边,大的放到右边。
左边和右边再同理比较

  • 时间复杂度:O(nlog2(n))

(2) 选择排序

直接选择

每次从当前位置往后查找最小值,与当前位置交换。

  • 时间复杂度:O(n^2)

堆排序

堆排序用到二叉树的概念。

  • 时间复杂度:O(nlog2(n))

(3) 归并排序

采用二分法,左边一个排序好的数组,右边一个排序好的数组,每次比较左右数组的第一个数,小的放到一个新的数组中。

  • 时间复杂度:O(nlog2(n))

3. 数据结构

  • 时间复杂度
  • 空间复杂度
每天10个前端知识点:算法与数据结构_第2张图片
各种排序算法时间复杂度和空间复杂度表

(1) 有序数组

(2) 无序数组

不重复


(3) 二叉树

增加、查找

以第一个树为根节点,新进来的数比谁小跟谁近就放在谁下面

根
    节点: {
        value: n,
        l: null,
        r: null
    }


(4) 队列

特点:先进先出,后进后出

(5) 堆栈

特点:后进先出,先进后出

(6) 散列

存的时候先开辟一块空间出来



更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!

公众号是坚持日更的,不发文的时候推送一些我觉得好用的前端网站或者看到的一些问题的解决方案,也更便于大家交流,就酱。

每天10个前端知识点:算法与数据结构_第3张图片
微信公众号:无媛无故

你可能感兴趣的:(每天10个前端知识点:算法与数据结构)