
数据结构与算法
LeeTaA
https://pw.charlee.top/dist/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[十大算法JavaScript的实现] 七、BFS广度优先搜索
目录一、概念二、类比三、实现四、结果一、概念图搜索算法,设置一个顶点,寻找所有子节点,如果未找到目标,则以所有子节点的子节点作为搜索对象,依次类推,直到没有子节点可搜索,则搜索完成。二、类比对比DFS,BFS是横向扩展的,每次只会扩展一个层级。类似一个人的关系网。三、实现js // 员工重要性 // 元素含义:[[员工id],[员工重要程度],[员工...原创 2020-01-20 10:25:13 · 396 阅读 · 0 评论 -
[十大算法JavaScript的实现] 六、DFS深度优先搜索
目录一、概念二、现实案例三、实现迷宫游戏寻找路径四、结果一、概念图搜索算法,设置一个顶点,对相邻节点进行搜索,一旦有可搜索点且未被搜索过,则以同样方式搜索该节点的相邻节点。直到节点无新相邻节点。则回到上一节点搜索其他未搜索过的节点。直到回到起点且无可搜索的节点。二、现实案例迷宫三、实现迷宫游戏寻找路径js/** * 迷宫二维数组 1为墙壁 * @t...原创 2020-01-20 10:23:38 · 613 阅读 · 0 评论 -
[十大算法JavaScript的实现] 五、BFPRT线性查找
目录一、思想二、实现三、结果一、思想快速排序(https://www.yuque.com/docs/share/7f809e06-0724-49d9-b37d-41f3b4d32b85#)的扩展。取五分中位数位基准值,减少时间复杂度。二、实现js// k / n-k+1 //找到list中第k大的数值 let BFPRT = (idxList, k) =>...原创 2020-01-20 10:20:36 · 242 阅读 · 0 评论 -
[十大算法JavaScript的实现] 四、二分查找
目录一、场景二、现实意义三、思想四、实现五、结果一、场景在一个有序的数列中,选取一个数,判断是否为未知数(必定存在于该序列范围)并可以获取对比关系,快速找到未知数。二、现实意义"猜数字"游戏快速缩小数字范围三、思想二分法:每次取范围中间值与目标值进行比较,缩小范围到原来的一半。四、实现js //随机生成一个 0-9999之间的数 let ...原创 2020-01-20 10:17:41 · 202 阅读 · 0 评论 -
[十大算法JavaScript的实现] 三、归并排序
目录一、思想二、实现三、结果一、思想将数列分成两半,假设每一个子序列都是按顺序排列的,那么我们可以从两个序列的第一个元素开始进行比较,将较大(或较小)的数放入合并后的数组,直到两个数组都遍历完,由于两个子序列是有序的,得到的合并后的数列也是有序的。然后我们回到假设,实际上分成两个子序列不一定是有序的,我们可以将其作为一个新的序列,进行内部分割及排序,类推直到子序列只有一个...原创 2020-01-20 10:15:44 · 192 阅读 · 0 评论 -
[十大算法JavaScript的实现] 二、堆排序
目录一、思想二、实现三、结果一、思想利用堆/二叉树结构特点进行交换,将数组类比为一个完全二叉树,依次对二叉树进行节点比较与交换,从子节点往上进行比较,将值较大的子节点交换到父节点,从下往上依次比较使得最大值最终到达根节点。然后,将根节点与末尾节点交换,移除末尾节点(作为当前堆最大值)二、实现js /** * 对数列list进行堆排序 */ let he...原创 2020-01-20 10:07:10 · 172 阅读 · 0 评论 -
[十大算法JavaScript的实现] 一、快速排序
目录一、优缺点二、思想三、实现四、结果一、优缺点快速排序因为每次交换都是“跳跃式”的,性能更好速度更快,但是排序是不稳定的,不稳定的具体含义是:相同数值的元素完成排序后的位置是不确定的(可能交换)。二、思想将数列分割为三部分:小于基准值的数列,基准值,大于基准值得数列。子数列分别分割成自己的三个部分,递归进行排序三、实现js // 入口函数 let...原创 2020-01-20 10:05:08 · 155 阅读 · 0 评论