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