首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法实现
神奇的程序员
创建于2021-06-16
订阅专栏
使用TypeScript将常用的数据结构与算法进行实现的系列解析文章
等 21 人订阅
共15篇文章
创建于2021-06-16
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
TypeScript实现贪心算法与回溯算法
本文将介绍两种算法设计技巧:贪心算法与回溯算法,并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 贪心算法遵循一种近似解决问题的技术,期盼通过每个阶段的局部最优选择(当前最好的解),从而达到全局的最优。 接下来我们通过两个例子讲解下贪心算法。 最少硬币找零问题…
TypeScript实现动态规划
前面的一系列文章跟大家分享了各种数据结构和算法的实现,本文将分享一些算法的设计技巧:分而治之、动态规划,使用这些技巧可以借算法来解决问题,提升自己解决问题的能力,欢迎各位感兴趣的开发者阅读本文。 前面分享的排序算法中,归并排序就是一种分而治之的算法。分而治之是算法设计中的一种方…
TypeScript实现向量与矩阵
作为一个对线性代数一无所知的开发者,想快速对向量和矩阵进行一个了解和认识,那么本文就正好适合你。 本文将站在开发者的角度讲解向量和矩阵,并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 向量是线性代数研究的基本元素,将一组数放在一起其基本的表示方法就是向量,例…
TypeScript实现八大排序与搜索算法
我们在页面上渲染数据时,通常会根据特定规则来对数据进行一个排序,然后再将其渲染到页面展示给用户。 那么对数据进行排序有很多种方式,哪一种效率高? 哪一种稳定性好?那一种占用内存小?本文将详解经典的八大排序算法以及三种搜索算法,并用TypeScript将其实现,欢迎各位对上述问题…
TypeScript实现图的遍历
有一个图,我们想访问它的所有顶点,就称为图的遍历。遍历图有两种方法:广度优先搜索和深度有优先搜索。 图遍历可以用来寻找特定的顶点或寻找两个顶点之间的路径,检查图是否连通。本文将详解图的两种遍历并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 本文重点讲解图遍历…
TypeScript实现图
图是一个非线性数据结构,本文将讲解图的基本运用,将图巧妙运用,并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 本文着重讲解图的实现思路,对图的基础概念不了解的开发者,请移步我的另一篇文章:图的认识。 图是网络结构的抽象模型,图是由一组边连接的顶点。任何二元关…
TypeScript实现二叉堆
二叉堆是计算机科学中一种非常著名的数据结构,由于它能高效、快速地找出最大值和最小值因此常被用于优先队列和堆排序算法。 本文将详解二叉堆并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 一颗完全二叉树,它的每一层都有左侧和右侧子节点(除过最后一层的叶节点),并且…
TypeScript实现AVL树与红黑树
二叉搜索树存在一个问题: 当往树中插入的数据一大部分大于某个节点或小于某个节点,这样就会导致树的一条边非常深。为了解决这个问题就出现了自平衡树这种解决方案。 本文将详解两种自平衡树:AVL树和红黑树并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 AVL树(A…
TypeScript实现二叉搜索树
树是一种非顺序数据结构,它用于存储需要快速查找的数据。现实生活中也有许多用到树的例子,比如:家谱、公司的组织架构图等。 本文将详解二叉搜索树并用TypeScript将其实现,欢迎各位感兴趣的开发者阅读本文。 二叉树中的节点最多只能有两个子节点:一个是左侧子节点, 另一个是右侧子…
递归的理解与实现
我们在写业务代码的时候,或多或少都会遇到需要使用递归的场景,比如在遍历树形结构时。 本文将通过递归的经典案例:求斐波那契数来讲解递归,通过画递归树的方式来讲解其时间复杂度和空间复杂度以及递归的执行顺序,欢迎各位感兴趣的开发者阅读本文。 接下来我们通过一个实例来讲解递归的应用。 …
TypeScript实现Map与HashMap
字典(Map)与散列表(HashMap)是一种采用[键(key),值(value)]对的形式来存储数据的数据结构。 本文将详细讲解字典与散列表的实现思路并使用TypeScript将其实现,欢迎各位感兴趣的前端开发者阅读本文。 字典与散列表存储数据的方式是键值对的形式来存储,因此…
集合的实现
集合是一种不允许值重复的顺序数据结构。 本文将详解集合的实现思路并使用TypeScript实现类似于ES6中的Set集合以及集合的基本运算,欢迎各位感兴趣的开发者阅读本文。 集合有一个很重要的特点:它的内部元素不会重复,因此我们可以使用JavaScript中对象来描述结合。 一…
链表与变相链表的实现
链表作为一种数据结构,它存放着有序元素的集合。元素与元素之间通过指针连接,因此在链表中添加或删除元素只需要修改指针的指向即可,执行速度相比数组有得到显著的提升。 现实生活中也有许多使用到链表的例子,例如兔子舞,每个人勾肩搭背组合而成,其中人相当于链表中的元素,勾肩搭背的手相当于…
队列与双端队列的实现
队列作为一种数据结构,在现实生活中它可应用于电影院、自助餐厅等场合,排在第一个的人会先接受服务。 在计算机应用领域里,多个文档的打印就是一个队列,排在第一的文档会先执行打印操作。 本文将用TypeScript实现队列与双端队列这两种数据结构,并用其解决计算机科学领域中的两道经典…
数组实现栈与对象实现栈的区别
栈作为一种数据结构,它可以应用在很多地方,当你需要经常获取刚存放进去的数据时,那么栈这种数据结构将是你的首选。 栈的实现方式一般有两种:数组实现和对象实现,这两种实现方式最终实现的功能都是一样的,但是在性能上却有着很大的差别。 本文将详细讲解这两种实现方式的差异并用TypeSc…