![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
爱早睡的老林
这个作者很懒,什么都没留下…
展开
-
原生js实现二叉树的遍历
首先我们要知道前序遍历:中序遍历,后序遍历的概念: 前序遍历:从双亲节点开始,遍历左树,再遍历右树; 中序遍历:从左树开始,再遍历双亲节点,最后遍历右树; 后序遍历:从左树开始,再遍历右树,最后遍历双亲节点; 核心算法很简单:创建一个数组,将当前的节点递归,算法不同处只是在于数组加入node节点的次序不一样: // 前序算法 function beforeErgodic(no...原创 2019-01-15 12:02:28 · 648 阅读 · 0 评论 -
js快速排序标准版与简版
快速排序的核心思想非常简单: 在数组中,找一个基准点P,然后splice出去; 将数组中小于改基准点的数据放在一个数组,大于基准点的数据放在一个数组; 对左边的数组进行递归操作,对右边的数组递归操作,最后concat起来,并返回 标准思想: function quickSort(arr) { arr = arr.concat(); if(arr.length<=1)...原创 2019-01-15 22:02:34 · 1811 阅读 · 0 评论 -
原生js就地排序的快速排序算法
快排思想阮一峰老师曾经写过,但是那并不是最正确的算法,不断创建新的数组,会增加空间复杂度;而且通过splice方法提取基准点,由于v8引擎对于splice方法处理的时间负责度为O{n},所以性能会降低,但是不管怎么说,阮一峰老师的排序基本思想是正确的,选取一个基准点,小的放在前面,大的放在后面,依次递归;这对于理解标准的排序算法会有很大的帮助; function quickSort(arr,l...原创 2019-03-14 16:37:11 · 1145 阅读 · 1 评论 -
插入排序,选择排序,冒泡排序,归并排序,快速排序整理(js版本)
先上神图: 冒泡排序法:相邻比较大小,来决定是否交换位置,依次迭代,标准的冒泡排序内循环是在尾部开始的;稳定 插入排序法:打扑克牌整理牌时的做法,注意需要用到temp来缓存下一个值;稳定; 选择排序法:冒泡太着急了,我选择稳妥一点,一次迭代后才确定交换一次;不稳定;因为相同元素的位置会调换; 快速排序法:将一大堆数据分成两个堆,一个大的一个小的;然后分别在大堆小堆继续迭代,不稳定; ...原创 2019-03-14 17:50:11 · 367 阅读 · 0 评论