数据结构
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 · 118 阅读 · 0 评论 -
数据结构对比
一、数组 数组的优点 数组按索引查找,效率非常高。 数组的缺点 数组的创建通常需要申请一段连续的内存空间(一整块的内存),并且大小是固定的(大多数编程语言数组都是固定的),所以当前数组不能满足需求时,需要扩容。一般情况下是申请一个更大的数组,比如2倍,然后将原来数组中的元素复制过去。 数组开头或中间插入、删除数据的成本较高,需要大量元素的位移。 数组按内容查找,效率非常低。 总结:当频繁用下标访问时选择数组。 二、链表 链表的优点 链表中的元素在内存中不必是连续的空间,可充分利用计算机.原创 2020-12-07 18:43:28 · 336 阅读 · 0 评论 -
图结构
一、实现邻接表 代码实现: var Graph = function() { var vertices = []; // 初始化顶点 var adjList = {}; // 初始化边 // 添加顶点 this.addVertices = function(v){ vertices.push(v); // 添加顶点 adjList[v] = []; // 初始化顶点对应的边 ...原创 2020-05-27 18:13:43 · 240 阅读 · 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 · 166 阅读 · 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 · 440 阅读 · 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 · 379 阅读 · 0 评论 -
栈和队列(JavaScript)
一、栈:后入先出() 栈结构实现: function Stack() { var items = []; // 使用私有变量,避免被外部操作 // push 栈顶添加元素 this.push = function(ele) { items.push(ele); } // pop 移除栈顶元素 需返回移除的元素 因为可能要用到 this.pop = function()..原创 2020-05-22 19:09:45 · 240 阅读 · 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 · 190 阅读 · 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 · 355 阅读 · 0 评论