JavaScript数据结构与算法
邪人君子
毕业于云南大学,电子信息工程专业。工作期间独立负责移动端项目开发,熟悉nginx建站流程,有linux环境开发经验,有iOS、Android端企业级应用的打包发布经验,有移动端首页白屏优化经验
展开
-
JavaScript数据结构之 —— 11动态规划(实例)
在列表中查找数据有两种方式:顺序查找和二分查找。顺序查找适用于元素随机排列的列表;二分查找适用于元素已排序的列表。二分查找效率更高,但是你必须在进行查找之前花费额外的时间将列表中的元素排序。顺序搜索顺序查找,有时也被称为线性查找。从列表的第一个元素开始循环,然后逐个与要查找的数据进行比较。如果匹配到了,则结束查找。如果到了列表的结尾也没有匹配到,那么这个数据就不存在于这个列表中。function seqSearch(arr, data) { for (var i = 0; i < arr.le原创 2020-05-27 16:29:44 · 10957 阅读 · 0 评论 -
JavaScript数据结构之 —— 10排序算法和搜索算法
目录排序算法冒泡排序选择排序插入排序归并排序快速排序排序算法开始排序算法之前,我们先创建一个数组来表示待排序和搜索的数据结构:function ArrayList(){ var array = []; //存储 this.insert = function(item){ //添加元素 array.push(item); }; this.toString= function(){ //方便查看数组输出结果 return array.join(); };}网上找的一张图:冒泡排原创 2020-05-26 18:15:37 · 344 阅读 · 0 评论 -
JavaScript数据结构之 —— 09二叉查找树(二叉搜索树)
树结构对比于数组/链表/哈希表有哪些优势数组:优点:可以通过下标值访问,效率高;缺点:在插入和删除元素时,需要大量的位移操作;链表:优点:数据的插入和删除操作效率都很高;缺点:查找效率低,需要从头开始依次查找,直到找到目标数据为止;当需要在链表中间位置插入或删除数据时,插入或删除的效率都不高。哈希表:优点:哈希表的插入/查询/删除效率都非常高;缺点:空间利用率不高,底层使用的数组...原创 2020-05-07 18:25:19 · 469 阅读 · 0 评论 -
JavaScript数据结构之 —— 08哈希表
散列算法(也就是哈希)的作用是尽可能快地在数据结构中找到一个值。在之前如果要在数据结构中获得一个值(使用get方法),需要遍历整个数据结构来找到它。所有元素根据和该元素对应的键,保存在数组的特定位置,该键和字典中的键是类似的概念。使用散列表存储数据时,通过一个散列函数将键映射为一个数字,这个数字的范围是0 到散列表的长度。哈希表简介哈希表的结构就是数组,但它神奇之处在于对下标值的一种变换...原创 2020-05-06 11:30:21 · 343 阅读 · 0 评论 -
JavaScript数据结构之 —— 07数组字典和对象字典
字典是一种以键- 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的键是指你用来查找的东西,值是查找得到的结果。与Set类相似,ECMAScript 6同样包含了一个Map类的实现,即我们所说的字典。字典和集合很相似,集合以[值,值]的形式存储元素,字典则是以[键,值]的形式来存储元素。字典也称作映射。...原创 2020-04-29 17:43:58 · 740 阅读 · 0 评论 -
JavaScript数据结构之 —— 06数组集合和对象集合
集合是由一组无序且唯一(即不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,但应用在计算机科学的数据结构中。还有一个概念叫空集。空集就是不包含任何元素的集合。你也可以把集合想象成一个既没有重复元素,也没有顺序概念的数组。没有顺序意味着不能通过下标值进行访问,不能重复意味着相同的对象在集合中只会存在一份。在ES6中的Set类就是一个集合类,这里我们重新封装一个Set类,了解...原创 2020-04-29 17:14:37 · 327 阅读 · 0 评论 -
JavaScript数据结构之 —— 05双向链表
双向链表和普通链表的区别在于,在链表中,一个节点只有链向下一个节点的链接,而在双向链表中,链接是双向的:一个链向下一个元素,另一个链向前一个元素,如下图所示双向链表简介链表结构总结单向链表有head和next两个属性,双向链表有head、tail、next、prev四个属性。处理好它们的指向,相当于将它们正确地连接在一起,这样就组成了一条链,这就是简单链表的实现删除节点的原理只要没...原创 2020-04-29 16:09:10 · 177 阅读 · 0 评论 -
JavaScript数据结构之 —— 04单向链表
链表是由一组节点组成的集合。每个节点都使用一个对象的引用指向它的后继。指向另一个节点的引用叫做链。插入节点:修改它前面的节点(前驱),使其指向新加入的节点,而新加入的节点则指向原来前驱指向的节点。删除节点:将待删除元素的前驱节点指向待删除元素的后继节点,将待删除元素指向 null,元素就删除成功了。单向链表单向链表包含两个类。Node 类用来表示节点,LinkedList 类提供了插入...原创 2019-08-05 11:55:29 · 220 阅读 · 0 评论 -
JavaScript数据结构之 —— 03构造队列
队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。插入操作也叫做入队,删除操作也叫做出队。入队操作在队尾插入新元素,出队操作删除队头的元素。function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue ...原创 2019-07-30 16:45:28 · 103 阅读 · 0 评论 -
JavaScript数据结构之 —— 02构造栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。对栈的两种主要操作是将一个元素压入栈和将一个元素弹出栈。入栈使用 push() 方法,出栈使用 pop() 方法。pop() 方法虽然可以访问栈顶的元素,但是调用该方法后,栈顶元素也从栈中被永久性地删除了。peek() 方法则只返回栈顶元素,而...原创 2019-07-30 10:33:47 · 131 阅读 · 0 评论 -
JavaScript数据结构之 —— 01数组基础
JavaScript中对数组的定义数组的标准定义是:一个存储元素的线性集合(collection),元素可以通过索引来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。几乎所有的编程语言都有类似的数据结构。然而JavaScript 的数组却略有不同。JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数。然而,这些数字索引在内部被转换为字符...原创 2020-04-24 15:53:30 · 166 阅读 · 0 评论