
数据结构
MiemieWan
这个作者很懒,什么都没留下…
展开
-
排序算法
一、排序算法排序算法有:冒泡排序、选择排序、插入排序、归并排序、计数排序、基数排序、希尔排序、堆排序、桶排序。二、冒泡算法function ArrayList() { var arr = []; // 数组中插入数据 this.insert = function(num) { return arr.push(num); } // 打印arr this.print = function() { console.l原创 2020-12-10 16:40:54 · 146 阅读 · 0 评论 -
数据结构对比
一、数组数组的优点数组按索引查找,效率非常高。数组的缺点数组的创建通常需要申请一段连续的内存空间(一整块的内存),并且大小是固定的(大多数编程语言数组都是固定的),所以当前数组不能满足需求时,需要扩容。一般情况下是申请一个更大的数组,比如2倍,然后将原来数组中的元素复制过去。 数组开头或中间插入、删除数据的成本较高,需要大量元素的位移。 数组按内容查找,效率非常低。总结:当频繁用下标访问时选择数组。二、链表链表的优点链表中的元素在内存中不必是连续的空间,可充分利用计算机.原创 2020-12-07 18:43:28 · 390 阅读 · 0 评论 -
图结构
一、实现邻接表代码实现:var Graph = function() { var vertices = []; // 初始化顶点 var adjList = {}; // 初始化边 // 添加顶点 this.addVertices = function(v){ vertices.push(v); // 添加顶点 adjList[v] = []; // 初始化顶点对应的边 ...原创 2020-05-27 18:13:43 · 268 阅读 · 0 评论 -
树结构
一、插入insert 添加node,先判断是否有根节点,如果没有则直接插入根节点,如果已经有根节点,则调用isertNode方法。代码实现:var Tree = function() { var root = null; var Node = function(val) { this.val = val; this.left = null; this.right = null; } // inse...原创 2020-05-27 16:42:30 · 190 阅读 · 0 评论 -
哈希表(散列表)
一、散列表基本实现根据键名,通过散列函数(转换成哈希值并相加% 37),得到散列值,将散列值作为键名,与值组成键值对,存入散列表。代码实现:var HashTable = function() { var items = []; // 散列函数:将key转化为哈希值再相加,返回散列值 var loseloseHashCode = function(key) { var hash = 0; for(var i = 0; i &l..原创 2020-05-26 17:46:45 · 500 阅读 · 0 评论 -
字典数据结构(Map、WeakMap)
代码实现:var Dictionary = function() { var items = {}; // has 判断是否有某属性 this.has = function(key) { // return items.hasOwnProperty(key); return key in items; } // set 添加新的键值对 this.set = function(key, value) { ...原创 2020-05-26 11:00:01 · 417 阅读 · 0 评论 -
栈和队列(JavaScript)
一、栈:后入先出()栈结构实现: function Stack() { var items = []; // 使用私有变量,避免被外部操作 // push 栈顶添加元素 this.push = function(ele) { items.push(ele); } // pop 移除栈顶元素 需返回移除的元素 因为可能要用到 this.pop = function()..原创 2020-05-22 19:09:45 · 272 阅读 · 0 评论 -
集合类数据结构(Set、WeakSet)
一、集合集合特性:(1)元素无重复性: A = {1,2,3}(2)空集: A= {}(3)子集: A = {1,2,3}, B = {1,2},B是A的子集二、模拟实现ES6中的Set数据结构实现Set中的方法:(1)has(value):查询集合中是否存在某元素(2)add(value):向集合中添加某元素(3)remove(value): 移除元素(4)clear()清除所有元素(5)value():提取集合所有值合并成数组(6)getIte...原创 2020-05-25 18:13:49 · 218 阅读 · 0 评论 -
链表(JavaScript)
1.链表结构实现:(1)append:尾部添加:分两种情况:一、链表为空,head设为node;二、链表不为空,获取到链表尾添加元素;注意:链表添加后长度要手动增加append代码实现:var LinkList = function() { var head = null; var length = 0; // 辅助类:用于创建链表项 function Node(ele) { this.ele = el...原创 2020-05-25 15:21:31 · 398 阅读 · 0 评论