
js-data structures,algorithms
JS数据结构与算法
『九离~空白』
When you are strong enough, the whole world will be kind to you.Work hard to learn new techniques so that you can achieve your dreams and go further.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JS 数据结构,图
什么是图 ?图是网络结构的抽象模型,图是一组由边连接的节点(或顶点)。一个图 G=(V,E)。由 V:一组顶点;E:一组边,连接中的顶点。图的相关术语 ?相邻顶点:由一条边连接在一起的。 顶点的度:相邻顶点的数量。 路径:路径是顶点 v1,v2,...vk 的一个连续序列,其中 vi 和 vi+1 是相邻的。 简单路径:不包含重复的顶点。 有向 / 无向图:图可以是无向的(边没有方向)或是有向的(边有方向)。 连通图:如果图中每两个顶点间在双向上都存在路径,则该图是强连通的。 加.原创 2020-09-22 16:16:47 · 584 阅读 · 0 评论 -
JS 算法,排序
前言:常见排序算法:冒泡排序,选择排序,插入排序,快速排序,归并排序,谢尔排序,堆积排序 ,已经 JS 中的 sort 排序方法的一个总结。(算法核心思想,代码,时间 / 空间复杂度 等)冒泡排序 ?核心思想:从未排序元素的第一个开始,依次与相邻元素比较,大的往后沉,小的往前浮,比较趟数不一定。(冒泡排序比较任何两个相邻的项,如果第一个比第二个大,则交换它们)。时间复杂度为 O(n^2); 排序趟数与原始序列中数据元素的排列有关(1 ~ (n-1次)); 是一种稳定性排序方法。...原创 2020-09-19 14:44:46 · 317 阅读 · 0 评论 -
JS 数据结构,二叉搜索树
前言:这里我们来了解 “ 树 ” 这种常见的数据结构。在我们有数组,链表,哈希表等后,为什么会产生树这种数据结构呢 ?数组的优点 :数组的主要优点是根据下标值访问效率会高很多。 数组的缺点 :在根据元素查找对应的位置时,需要先对数组进行排序,生成有序数组,才能提高查找效率(比较好的方式就是,先对数组进行排序,在进行二分查找。)。另外数组在插入和删除操作时,需要大量的位移操作,效率低。 链表优点 :链表的插入和删除效率都很高。 链表缺点 :查找的效率很低,需要从头开始已次访问链表中的每个数据项原创 2020-09-18 14:52:50 · 258 阅读 · 0 评论 -
JS 数据结构,哈希表
什么是哈希表 ?哈希表结构就是数组,但是不同的地方是,对下标值的一种变换,这种变换被称为哈希函数,通过哈希函数可以获取到 HashCode 。哈希表和数组相比有什么优点?哈希表通常是基于数组进行实现的,但是相对于数组,它又有很多优势,可以提供非常快速的插入,删除,查找操作。无论多少数据,插入和删除值需要接近常量的实现,O(1)的时间级,实际上,只需要几个指令即可完成。它的速度比树还快,基本可以瞬间查到想要的元素。它相对于树来说,编码容易得多。哈希表和数组相比有什么缺点 ?哈希表相..原创 2020-08-17 15:38:09 · 319 阅读 · 0 评论 -
JS 数据结构,集合&字典
关于集合 :集合通常由一组无序的,不能重复的元素构成。集合比较常见的实现方式是哈希表。可以将集合看做特殊的数组。特殊之处在于里面的元素没有顺序,也不能重复。没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只能存在一份。学习集合,可以自己封装一个集合类。在 JS 中,2011年6月发布的 ES5 中包含了 Array 类。2015年6月发布的 ES6 中包含了 set (集合类),所以其实我们不用封装集合,可以直接使用它。使用 JS 中 Object 类,封装集合 :...原创 2020-08-06 11:41:49 · 268 阅读 · 0 评论 -
JS 数据结构——链表
前言 :在学习链表之前,先来说说数组。要存储多个元素,数组可能是最常用的数据结构。几乎每一种编程语言都有默认实现的数组结构。但是它存在一些缺点,数组的创建通常需要申请一段连续的内存空间(一整块内存),并且大小是固定的(大多数编程语言都是固定的),所以当当前数组不能满足容量要求的时候,需要进行扩容。(一般情况下是申请一个更大的数组,然后将原数组中的元素复制过去)。而且在数组开头或者中间删除,插入数据的成本很高,需要大量元素的位移,在JS 中,Array 已经帮我们做了这些事。那么问题来了,既然数组有这些原创 2020-08-04 15:27:53 · 295 阅读 · 0 评论 -
Vue 中的 VDOM(虚拟DOM) 和 diff 算法,你清楚吗 ?
前言 :在学完基础的 html(html5),css(css3),js(es6) 等基础后,我们可以利用已有的知识去做原生开发。但是为了提高开发效率,可能会去学习一些方便操作 DOM,而封装的库或者框架,如 jQuery 等,还有一些 UI 组件库或框架,如 Bootstrap,Element-UI 等。如果你觉得操作 DOM 比较繁琐,那么就可以去了解比较流行的 react 和 vue 等前端框架。这些框架,它的核心是,数据响应式,实现了操作数据化,废弃了之前操作DOM的繁琐的任务。还有就是我们今.原创 2020-07-28 12:03:16 · 1144 阅读 · 0 评论 -
JS 数据结构,队列(Queue)
JS数据结构与算法 —— 队列(Queue)什么是队列 ?队列(Queue):它是一种受限的线性表,先进先出(FIFO)。受限之处在于,它只能在表的前端进行删除操作,在表的后端进行插入操作。队列的应用 ?打印队列:有五份文档需要打印,这些文档会按照次序放入到打印队列中,打印会依次从队列中取出文档,优先放入的文档,优先被取出,并且对该文档进行打印,以此类推,直到队列中不再有新的文档。 线程队列:在开发中,为了让任务可以并行处理,通常会开启多个线程。但是,我们不能让大量的线程同时运行处理任务原创 2020-07-30 11:23:06 · 637 阅读 · 0 评论 -
总结 JS 中数组排序的常见方法:
这篇文章是对于 JS 中数组排序的常见方法的一个总结 :前置知识 :排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。内排序有可以分为以下几类:插入排序:直接插入排序、二分法插入排序、希尔排序。 选择排序:直接选择排序、堆排序。 交换排序:冒泡排序、快速排序。 归并排序 基数排序稳定性稳定:归并排序、冒泡排序、插入排序,基数排序。 不稳定:选择排...原创 2020-06-01 13:58:08 · 837 阅读 · 0 评论 -
JS 数据结构,栈(Stack)
前言 :在说栈之前先来说一下我们比较熟悉的数组,JS 中已经对数组做了很好的封装,可以通过一些 API 方法实现指定位置插入,指定元素删除,还实现了自动扩容的功能等。在其他的语言中,如 JAVA。数组作为底层数据结构,存在无法自动扩容等问题,在 ArrayList 等中,会使用新建更大的数组去替换原数组的方式去实现。总而言之,从数据结构来说,数组的插入和删除操作很耗性能,比较复杂的,因为要考虑到其他元素下标值得改变。但是数组又有它自己独特得优势,可以通过下标查找指定元素(高效)。后续链表得出现,弥补.原创 2020-07-28 20:47:23 · 282 阅读 · 0 评论