数据结构 + 常用算法
数据结构等常用算法总结
zlq_csdn
有志者自有千计万计,无志者只感千难万难。
展开
-
高级数据结构
了解了基本数据结构,就可以帮助我们分析问题的结构,提高解决问题的能力,但对于复杂问题,或者为了提高解决问题的时间、空间复杂度,基本的数据结构还是远远不够的,因此在学习、介绍几种高级数据结构:优先队列图优先队列特点:能够保证每次取出的数据都是队列中优先级最高的元素。优先级可自定义。应用场景:从一个无序数组中根据其优先级逐步地找出需要的元素值。实现方式:优先队列本质一个二叉堆(Bin...原创 2020-04-11 18:00:25 · 679 阅读 · 0 评论 -
递归与回溯
概念理解:递归递归的基本性质就是函数自调用,处理问题时,递归是将一个大问题不断的化为小问题进行处理推导的过程。回溯利用了递归的性质,从问题的开头出发,不断地尝试,回一步或者是多步在做选择,直到到达终点的一个过程。递归分析递归算法是调用自身函数的一中算法(二叉树遍历中得到了广泛应用),可以简单理解,算法是已经实现了解决问题的步骤,使用递归只是将一个大问题不断的变小,直到得出结果。案例...原创 2020-04-02 11:25:26 · 650 阅读 · 0 评论 -
js实现双向链表
双向链表function DoubelLinkedList() { let Node = function (ele){ this.ele = ele; this.prev = null; this.next = null; } let length = 0, head = null; // 向尾部追加 this.append = function(ele) { l...原创 2020-03-10 18:30:04 · 217 阅读 · 0 评论 -
js实现单链表、单链表循环
链表 是一种物理存储单元上非线性、非连续的数据结构。每个节点由数据域(存储的数据值)和指针域(存储的是指针信息指向链表的下一个或上一个元素)组成。正式由于指针的存在,链表在物理存储上是非连续的。特点:添加、删除节点效率高,只需要操作指针的指向即可链表长度是无限制的,可动态的变化长度js 实现单链表function LinkedList() { let Node = funct...转载 2020-03-10 17:35:28 · 487 阅读 · 0 评论 -
常用数据结构
数据结构分类:数据结构 是指相互之间存在一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。常见的数据结构有:数组、栈、队列、链表、树、图、堆、散列表等,如下:1. 数组数组是可以在内存中连续连续存储多个元素的结构,在内存中的分配也是连续的,访问是通过元素下标进行的,数据下标从 0 开始。int [] data = new int[100];data[0] = 1;优...原创 2020-03-06 09:46:50 · 455 阅读 · 0 评论 -
js实现队列
js实现队列队列: 队列是一种特殊的线性表,特殊性表现它只能在表的前端 front 进行删除操作,只能在表的后端 rear 进行添加操作。 先进先出(FIFO)原创 2020-03-05 15:20:28 · 1048 阅读 · 0 评论 -
js实现二叉树根节点到所有叶子节点组成的路径数字之和
思路:首先会用到的就是树的遍历,其次为了得到每个路径的数字之和,需要对每次遍历完的结果进行保持,于是会用到递归的思想。// 测试数据如下:var root2 = { val: 1, left: { val: 2, left: null, right: null, }, right: { val: 3...原创 2020-03-05 10:11:26 · 1421 阅读 · 0 评论 -
js数据结构☞二叉树遍历
二叉树的遍历//测试数据:二叉树结构如下:var root = { val: 1, left: { val: 2, left: { val: 4, }, right: { val: 5 } }, right: { v...原创 2020-03-05 09:59:14 · 179 阅读 · 0 评论 -
js之字形输出二叉树
/* 1 2 3 4 5 6 7 输出:[[1], [3, 2], [4, 5, 6, 7]]*/// 主要思想就是二叉树的遍历function print(root) { if(!root) return []; var result = [], queue = [], flag = true; queue.pu...原创 2020-03-04 15:26:01 · 352 阅读 · 0 评论 -
js实现基于数据的栈结构
栈: 是遵循 后进先出(LIFO) 的有序集合,存在栈顶、栈底。拥有方法如下:push(ele); // 入栈,将一个或多个新元素添加到栈顶pop(); // 出栈,返回被删除的元素peek(); //返回栈顶元素,不对栈做任何...原创 2020-03-02 21:39:07 · 208 阅读 · 0 评论 -
js object 深、浅拷贝
基本类型值常见基本数据类型:string、number、boolean、undefined、null、symbol;基本类型是按值来访问的,从一个变量复制基本类型到另一个变量后,这两个变量是完全独立的,二者互不影响。var str = "zlq":var str2 = str;str2 = "qlz";console.log(str); //zlq引用类型值常见引用类型...原创 2020-03-02 20:49:18 · 343 阅读 · 0 评论 -
排序问题
js数据去重常用方法:sort、冒泡、快排、归并等。sort排序sort() 方法不传递回调方法时,会默认调用每一项的 toString()方法,然后返回得到比较的字符串。sort 方法是在原数组上进行的修改,不会生成副本。var arr = [1,5,2,9];arr.sort(function(a, b) { if(a > b) return 1; // 互换...原创 2020-03-02 17:16:35 · 231 阅读 · 0 评论