数据结构
文章平均质量分 68
数据结构相关内容
YuLong~W
这个作者很懒,什么都没留下…
展开
-
JavaScript 实现 归并排序、快速排序
文章目录归并排序快速排序分治算法:“分治”,分而治之。其思想就是将一个大问题分解为若干个子问题,针对子问题分别求解后,再将子问题的解整合为大问题的解。利用分治思想解决问题,一般分三步走:分解子问题求解每个子问题合并子问题的解,得出大问题的解归并排序思路分析:归并排序是对分治思想的典型应用,它按照如下的思路对分治思想“三步走”的框架进行了填充:分解子问题:将需要被排序的数组从中间分割为两半,然后再将分割出来的每个子数组各分割为两半,重复以上操作,直到单个子数组只有一个元素为止。求解原创 2022-01-03 19:44:25 · 263 阅读 · 2 评论 -
JavaScript 实现二叉搜索树的操作(插入、遍历、最值)(ES6)
文章目录二叉树二叉树树 : 是n(n>=0)个结点的非线性表结构,n=0时称为空树。在任意一棵非空树中:有且仅有一个根结点当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm, 其中每一个集合本身又是一棵树,被称为根的子树二叉树: 每个节点最多只有2个子节点的树,这两个节点分别是左子节点和右子节点满二叉树: 有一种二叉树,叶子全部在最底层,除了叶子节点外,每个节点都有左右两个子节点完全二叉树: 有一种二叉树,叶子节点都在最底下两层,最后一层叶原创 2021-09-02 20:38:14 · 416 阅读 · 2 评论 -
JavaScript 实现栈和队列的操作(ES5、ES6)
文章目录栈队列栈 和 队列 是两种重要的线性结构,从数据结构的角度看,栈和队列也是 线性表,其特殊性在于栈和队列的基本操作是线性表的子集。它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的的抽象数据类型。栈所有的插入和删除操作都限制在线性表的 同一端 进行,是一种 后进先出 的线性表表尾端称栈顶,表头端称栈底ES5的写法://定义栈的构造函数function Stack(){ // 用数组来模拟栈 let原创 2021-08-15 23:10:42 · 232 阅读 · 2 评论 -
JavaScript 实现双向链表的操作
文章目录参考之前所写文章:JavaScript 实现单向链表的操作JavaScript实现双向链表 :使用ES6面向对象语法双向链表: 每个结点都有一个指向其前一个结点的指针域(prev)和一个指向其下一个结点的指针域(next)与单链表区别:单链表是单向的,有一个头结点,一个尾结点,要访问任何结点,都必须知道头结点,不能逆着进行双向链表基于单链表。双链表添加了一个指针域,通过两个指针域,分别指向结点的前结点和后结点。可以通过双链表的任何结点,访问到它的前结点和后结点链表的设计:一个是 N原创 2021-06-13 09:59:04 · 264 阅读 · 4 评论 -
JavaScript 实现单向链表的操作
JavaScript实现链表 :使用ES6面向对象语法链表: 数据的一种存储结构,一个链表包含若干个结点,每个结点至少包含一个数据域和一个指针域,指针域指向下一个结点链表的分类:单向链表:每个结点都只有一个指向其下一个结点的指针域(next)双向链表:每个结点都有一个指向其前一个结点的指针域(prev)和一个指向其下一个结点的指针域(next)头指针、头结点、首元结点的区别:头结点: 在单链表第一个元素结点之前设置的一个结点, 数据域可以不存任何信息,指针域指向单链表第一个元素的结点。头原创 2021-06-02 17:20:12 · 277 阅读 · 4 评论 -
JavaScript 实现排序算法(冒泡、选择、插入)、查找算法(顺序、二分)
文章目录排序算法冒泡排序选择排序查找算法顺序查找二分法查找(折半查找)排序算法冒泡排序数组元素依次进行两两比较,若两个元素存在大小关系就进行交换,直到数组有序//冒泡排序var arr=[10,7,5,31,98,27]console.log(arr)//升序for(var i=0;i<arr.length;i++){ //控制排序趟数 for(var j=0;j<arr.length-1;j++){ //控制比较次数 if (arr[j]>arr[原创 2021-05-21 12:34:29 · 1056 阅读 · 8 评论