算法点滴
文章平均质量分 71
DecXu
这个作者很懒,什么都没留下…
展开
-
[Golang] 《算法导论》动态规划(Dynamic Programming)理解 (一)
本篇内容为阅读《算法导论》动态规划算法设计时的一些理解和记录。建议大家去看原书,真的好。动态规划有点像分治法,都是通过合并原问题的子问题的解来得到原问题的解。不同的是分治法将原问题划分为不相交的子问题,递归地解决子问题,然后组合它们的解来得到原问题的解。而动态规划需要原问题划分为有重叠的子问题,即其子问题又需要共同的子子问题。当划分的子问题有重叠时,使用分治法会导致重叠子问题的重复计算。动态规划实际上就是通过存储子问题的解来避免这样的重复计算,这是动态规划的基本思想。动态规划一般用于求一个最优解的问题原创 2022-04-21 22:25:57 · 255 阅读 · 0 评论 -
Go语言实现快速排序(QuickSort)
快速排序(QuickSort) 作为最流行的排序算法之一,又有非常出色的性能,被广大的编程语言作为标准库默认排序方法。快速排序的设计思想是一个很好的分治法(divide-and-conquer) 的实例,理解他的实现原理将有助于我们在实际生产过程中设计自己的解决问题的算法。最直接的,很多算法题目需要使用到类似的思想。先贴代码(Go):func quickSort(nums []int, l, r int) { //[l,r] if l < r { m := partition(原创 2022-04-18 13:46:15 · 5003 阅读 · 3 评论 -
循环不变量(loop invariant)的理解
在计算机科学中,循环不变量(loop invariant),是一组在循环体内、每次迭代均保持为真的某种性质,通常被用来证明程序或算法的正确性。理解循环不变量这个概念对我们理解算法过程,和解决算法问题有很大的帮助。下面参考《算法导论》,对循环不变量的概念进行详细的解释。我们使用循环不变量帮助我们理解一个算法为什么是对的。对于一个给定的循环不变量,我们必须遵循以下三个属性:初始化: 在循环的第一次迭代之前,循环不变量为真。保持: 如果在循环的一次迭代之前循环不变量为真,那么在下一次迭代之前循环不变量同原创 2022-04-17 15:17:06 · 3843 阅读 · 0 评论