
算法
文章平均质量分 71
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
summer_west_fish
本科毕业深圳大学,拥有Java开发10年的经验。 拥有Devops、敏捷和项目管理多年的经验,并且获得PMP、ACP和DOP等相关证书。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WAL/Write-Ahead Log
WAL的主要原理是在进行任何数据修改之前,先将这些修改以日志的形式写入到稳定的存储介质中(通常是磁盘)。这意味着,当数据库或存储系统接收到一个修改请求时,它首先不会直接修改内存或磁盘上的数据,而是先将这个修改操作写入到WAL中。一旦WAL写入成功,系统就会确认这个修改操作已经完成,然后再异步地将这个修改应用到实际的数据库或存储系统中。此外,在分布式存储系统中,WAL也被广泛用于元数据的更新操作,以提高系统的可用性和容错能力。原创 2024-03-01 16:08:09 · 470 阅读 · 0 评论 -
Dijkstra算法求最短路径
dis[B]=dis[F]+dis[F-B]=6+7=13,dis[A]=dis[F]+dis[F-A]=6+16=22,dis[G]=dis[F]+dis[F-G]=6+9=15>12(,dis[C-B]=10,因而dis[B]=dis[C]+10=13,dis[F]=dis[C]+dis[C-F]=9,dis[E]=dis[C]+dis[C-E]=3+5=8>4。dis[c]代表D到C点的最短距离,因而初始dis[C]=3,dis[E]=4,dis[D]=0,其余为无穷大。用来表示已经找到的最短路径。原创 2024-01-16 15:56:24 · 958 阅读 · 0 评论 -
银行家算法/Banker‘s Algorithm
每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,银行则根据客户的最大需求量和系统当前的可用资源量来决定是否满足客户的请求。如果客户的请求不会导致银行离开安全状态,则会分配现金,否则客户必须等到其他客户存款足够。银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法。否则,该进程将一直等待,直到资源可用。通过这种方式,银行家算法可以有效地避免死锁情况的出现,确保系统的安全运行。原创 2024-01-14 10:58:15 · 559 阅读 · 0 评论 -
动态规划中的状态转移方程和最优子结构
像这样,我们可以通过计算子问题的最优解可以来构建整个问题的最优解,我们就说这个问题具有。像这样,当前阶段的状态往往是上一阶段状态和相应决策的结果,采用指标函数来表示它们之间的关系称为。如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优性原理。移动而来,即有f[i][j] = f[i-1][j] + grid[i][j]移动而来,即有f[i][j] = f[i][j-1] + grid[i][j],这里的第四步,构造问题的最优解,不是必须的,但是有一些题目需要。原创 2023-12-29 09:30:59 · 632 阅读 · 0 评论 -
算法的四大思想之一:动态规划
动态规划(Dynamic Programming,简称DP)是一种解决问题的算法思想,它将一个大问题成多个的子问题,并且通过解决这些子问题来求解原始问题。原创 2023-12-28 11:08:41 · 1350 阅读 · 0 评论 -
贪心思想的经典题目
然后,从头遍历字符,并更新字符的。原创 2023-12-20 11:16:11 · 910 阅读 · 0 评论 -
算法的四大思想之一:回溯思想
是一个种基于深度优先搜索的思想,在搜索过程中通过剪枝操作来减少搜索空间,从而找到问题的解。回溯可以理解为递归的拓展,而代码结构又特别像深度遍历N叉树,因此只要知道递归,理解回溯并不难。原创 2023-12-15 11:01:13 · 1196 阅读 · 0 评论 -
算法的四大思想之一:贪心思想
指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。原创 2023-12-05 13:35:16 · 1898 阅读 · 2 评论 -
算法的四大思想之一:滑动窗口
在数组双指针里,我们介绍过"对撞型"和两种方式,而滑动窗口思想就是快慢型的特例。原创 2023-12-05 11:11:36 · 1556 阅读 · 0 评论 -
跳表SkipList
什么是跳表跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集(见右边的示意图)。一开始时,算法在最稀疏的层次进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。一张跳跃列表的示意图。每个带有箭头的框表示一个指针, 而每行是一个稀疏子序列的链表;底部的编号框(黄色)表示转载 2021-09-01 10:30:48 · 115 阅读 · 0 评论 -
算法-二分查找
算法-折半查找原创 2021-01-09 08:52:41 · 189 阅读 · 0 评论