数据结构
JavaScript与数据结构
dralexsanderl
这个作者很懒,什么都没留下…
展开
-
JavaScript搜索算法
顺序搜索也称线性搜索,是最基本的搜索算法,原理就是将每一个数据结构中的元素和要找的元素进行比较,是最低效的一种搜索算法。先创建一个Search类,里边就只有一个array属性。class Search{ constructor(){ this.array = [5,4,3,2,1] }}class Search{ constructor(){ this.array = [5,4,3,2,1] } sequentialSearch(val){ for(原创 2020-05-12 13:26:20 · 293 阅读 · 0 评论 -
JavaScript排序算法之堆排序
堆排序是一种很高效的算法,这种算法把数组当作二叉树来管理。索引0就是树的根节点除根节点外,任意节点N的父节点是N/2节点L的左子节点是2*L节点R的右子节点是2*R+1来看张图理解一下:把数组[3,5,1,6,4,7,2]看作是下面的树。...原创 2020-05-12 11:41:04 · 213 阅读 · 0 评论 -
JavaScript排序算法之快速排序
快速排序快速排序也许是最常用的排序算法了。它的复杂度为O(nlogn),且它的性能通常比其他的复杂度为O(nlogn)的排序算法要好。和归并排序一样,快速排序也使用分治的方法,将原始数组分为较小的数组(但它没有像归并排序那样将它们分割开)。...原创 2020-05-11 12:02:25 · 203 阅读 · 0 评论 -
JavaScript排序算法之归并排序
归并排序归并排序是一种分治算法,其思想是将原始数组切分成较小的数组,直到每个小数组只有一个位置后进行排序,接着将小数组归并成较大的数组,直到最后一个排序完毕的大数组。归并排序性能不错,其复杂度为O(nlog^n)。class ArrayList{ constructor(){ this.array = [] } insert(item){ this.array.push(item) } toString(){ return this.array.join()原创 2020-05-09 12:10:20 · 261 阅读 · 0 评论 -
JavaScript排序算法之插入排序
插入排序插入排序每次都只排一个数组项,每一次选择一个项的时候,都会跟前一项进行比较,以升序为例,当插入项比前一项小的时候,就往前一项的前一项在进行比较,直到找到前一项比插入项小的时候,才插入。class ArrayList{ constructor(){ this.array = [] } insert(item){ this.array.push(item) } toString(){ return this.array.join() } inse原创 2020-05-09 11:27:27 · 290 阅读 · 0 评论 -
Javascript排序算法之选择排序
选择排序这个算法倒是非常容易理解,就是在数据结构中找到最小值,并放置在第一位,然后找第二小的值,以此类推。class ArrayList{ constructor(){ this.array = [] } insert(item){ this.array.push(item) } toString(){ return this.array.join() } swap(array,idx1,idx2){ [array[idx1],array[id原创 2020-05-09 11:26:12 · 203 阅读 · 0 评论 -
JavaScript排序算法之冒泡排序
冒泡排序冒泡算法在所有算法当中是最简单的,但是在运行时间方面,冒泡排序则是最差的。原理:比较任何相邻的项,如果第一个比第二个大,就交换彼此。元素项向上移动至正确的位置。class ArrayList{ constructor(){ this.array = [] } insert(item){ this.array.push(item) } toStri...原创 2020-05-08 13:18:06 · 202 阅读 · 0 评论 -
JavaScript数据结构之图
图图也是一种非线性数据结构,是一组由边连接的节点(或者顶点)。原创 2020-05-07 14:47:56 · 308 阅读 · 0 评论 -
JavaScript数据结构之树
树是一种非顺序的数据结构,对于存储需要快速查找的数据非常有用。位于树顶部的节点称为根节点。树中的节点分为内部节点和外部节点,至少有一个子节点的节点为内部节点,没有子节点的节点为外部节点或者叶节点。子树是由节点和它的子节点构成,例如上面的节点E,K,L构成一棵子树。节点深度取决于其祖先节点的数量,比如节点E的深度为2,它有两个祖先节点A和B。树的高度取决于所有节点深度的最大值。一棵树可以...原创 2020-04-28 15:22:57 · 307 阅读 · 0 评论 -
js数据结构之字典和散列表
字典不同于集合【值,值】形式的存储,字典存储的【键,值】对,字典也称作映射。在ES6中,包含了一个Map类,这就是字典。本文在ES6中的map类的基础上实现一个字典类。let Distionary=(function(){ const items={} class Distionary{ set(key,value){ items[k...原创 2020-04-28 13:13:36 · 334 阅读 · 0 评论 -
ES6中的Set和WeakSet
SetES6提供了心得数据结构Set,它类似数组,但是成员的值是唯一的(没有重复)。Set是一个构造函数,用来生成Set数据结构const set = new Set()var arr =[1,1,2,2,3,3,4,4,5,5]arr.forEach(x=>set.add(x))console.log(set) //Set(5) {1, 2, 3, 4, 5} //没有重复值...原创 2020-04-16 11:37:29 · 256 阅读 · 0 评论 -
JavaScript数据结构之链表
链表存储多个元素,最常用的就是使用数组,但是,在很多编程语言中,数组的长度是固定的,当数组被数据填满时,想要再加入元素就会很困难。在数组中,添加和删除元素也比较麻烦,因为需要将数组中的其他元素进行向前或者向后平移。虽然JavaScript使用 split() 方法不需要再访问数组中的其他元素,不存在上述的问题,但是js把数组实现成了对象,与其他语言(比如 C++ 和 Java) 的数组相比,效...原创 2020-04-14 22:06:38 · 285 阅读 · 0 评论 -
JavaScript数据结构之队列
队列队列是一组遵循先进先出(FIFO,First In First Out)原则的有序项。从队列的尾部开始添加元素,从顶部移除元素。用JavaScript实现队列创建一个简单的Queue类class Queue{ constructor(){ this.items=[] } enqueue(element){ this.items.p...原创 2020-04-13 21:50:54 · 271 阅读 · 0 评论 -
Javascript数据结构之栈
栈(Stack)栈是一种遵循后进先出原则的有序集合。元素从栈顶开始添加。在生活中可以发现很多栈的例子,比如说叠起来的盘子,或者是堆起来的一摞书。JS实现一个栈class Stack{ constructor(){ this.items=[] } push(element){ //进栈 this.items.push...原创 2020-04-13 20:37:05 · 296 阅读 · 0 评论