数据结构与算法
文章平均质量分 63
花满樱❀
这个作者很懒,什么都没留下…
展开
-
哈希表(散列表)
哈希表前言首先来看数组,我们知道数组可以通过下标值拿到某个元素,这个操作是非常快的(O(1)),但是数组的插入和删除的效率并不是很高,删除数组的某个元素我们需要将被删除元素的后面的元素往前移,插入则需要将数组元素往后移,这种移动操作是效率并不是很好。这时候可能就会想能不能有一种数据结构既能通过某个index值快速查找到某个元素(数组的功劳),又能让插入和删除效率非常高(链表的功劳),所以就引入了哈希表(散列表)这个数据结构哈希表定义哈希表就是通过key值(键值)直接访问数据的数据结构。它会通过一原创 2021-10-24 15:29:30 · 193 阅读 · 0 评论 -
链表
复习 链表链表被称为线性表的链式存储结构定义链表:可以存储多个元素,由n个结点和指针链组成一个链表,称为线性表的链式存储结构;每个节点由数据域和指针域两部分组成单链表单链表:由n个节点和指针链组成,每一个结点由数据域(存放元素本身的数据)和指针域(指向下一个元素的引用(或称为指针))组成单链表的代码实现function LinkedList() { /** * 头指针,用于指向链表的第一个节点的引用, * 当链表为空的时候,head指向 null * 最后一个节点指原创 2021-10-11 01:14:51 · 200 阅读 · 0 评论 -
栈和队列
复习 栈和队列栈和队列前言:我们知道数组是一种线性结构,并且可以在任意位置进行插入和删除,有时候为了实现某些功能,需要对这种任意性加以限制,而栈和队列就是比较常见的受限的线性表结构,栈仅允许在表的一端进行插入和删除,这一端称为栈顶,另一端称为栈低。后进先出LIFO(last in first out):向一个栈插入元素叫做进栈,压栈,入栈,将新元素放到栈顶元素的上面,成为新的栈顶元素;从栈顶删除元素叫做出栈,退栈,删除栈顶元素,使其相邻的元素成为新的栈顶元素;基于数组实现functio原创 2021-10-06 12:22:52 · 81 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
复习 深度优先搜索和广度优先搜索(js)先来了解一下图的存储方式------领接表和领接矩阵无向图的领接矩阵和领接表有向图的领接矩阵和领接表知道图是如何存储的以后,就可以用代码来保存一个图,采用邻接表的方式来存储图function Chart() { /* 顶点 */ this.vertex = [] /* 边 */ this.edge = new Map()// 添加顶点 Chart.prototype.addVertex = (vertex)原创 2021-10-04 11:27:36 · 107 阅读 · 0 评论 -
树和二叉树
复习 树和二叉树1. 树的定义树是是由n(n >= 0)各结点构成的有限集合,是一种一对多的数据结构当 n = 0 时,称为空树当 n > 0 时,称为非空树,具备以下性质有且仅有一个特殊的结点,这个结点称为根节点其余结点可分为m(m >= 0)个互不相交的有限集合,其中每一个集合本身又是一颗树,并叫做树的子树2. 树的基本术语3. 二叉树(**)1. 定义由 n(n >= 0)个结点组成的有限集合二叉树不是树的特殊情况,完全是两个概念。因为二叉原创 2021-10-03 23:56:19 · 246 阅读 · 0 评论 -
常用排序算法(js)
复习排序算法1. 冒泡排序思路:每一轮都对相邻的两个元素进行比较,如果逆序则交换位置,直到所有元素都排好序为止基本操作:代码:ArrayList.prototype.bubbleSort = () => { const len = this.data.length for (let i = 0; i < len - 1; i++) { for (let j = 0; j < len - 1 - i; j++) { if原创 2021-09-28 23:54:14 · 614 阅读 · 0 评论