算法
文章平均质量分 79
树不懒
这个作者很懒,什么都没留下…
展开
-
【算法证明 二】快速排序的时间复杂度分析
快速排序是一种分治算法。选取主元后,将数组使用 partition 算法根据主元分割成两半,再对两半分别进行排序。假设左半边数量为q,则右半边数量为n−q−1。原创 2023-05-27 22:48:48 · 1614 阅读 · 0 评论 -
【算法证明 三】计算顺序统计量的复杂度
其作用是求解一个数组中第 k 大的数字。常见的算法是基于 partition 的分治算法。不难证明这种算法的最坏复杂度是Θn2。但是其期望复杂度是Θn。另外,存在一种最坏复杂度是Θn的算法,其设计和证明思路比较有意思,拿来说一下。原创 2023-06-04 21:40:57 · 508 阅读 · 0 评论 -
【算法证明 七】深入理解深度优先搜索
深度优先搜索包含一个递归,对其进行分析要复杂一些。与上一篇文章一样,还是给节点定义几个状态,然后详细分析深度优先搜索算法有哪些性质。原创 2023-06-24 21:37:07 · 561 阅读 · 0 评论 -
【算法证明 六】深入理解广度优先搜索
看了算法导论,才知道自己理解的深搜、广搜有多肤浅。接下来两篇文章将深入探索图搜索算法的方方面面,不再局限于做出简单的图搜索算法,而是站在图搜索算法上深入思考。本问将证明广度优先搜索求最短路的正确性。而下一篇文章将使用深度优先搜索实现强连通分量算法的正确性。原创 2023-06-24 01:02:57 · 422 阅读 · 0 评论 -
【算法证明 四】摊还分析
按照算法导论的顺序,下面该介绍数据结构,动态规划,贪心算法了。但是基本的数据结构比较简单,靠数学直觉也能很好的理解,就不总结了。动规和贪心是那种听懂很简单,用起来很难得算法,准备放在后面总结。摊还分析对一般人来说是比较新奇得技术,应该比较少的人会注意到这类问题,而且与图相关的算法复杂度分析经常遇到需要摊还分析的情况。所以接下来两节准备总结下摊还分析的技术和思考逻辑。并先用该技术来证明的算法复杂度。原创 2023-06-23 12:50:25 · 458 阅读 · 0 评论 -
【算法证明 五】并查集的时间复杂度
S1S2SkS1S2...Sk和一组元素e1e2ene1e2...en,某一个元素在同一时刻只能属于一个集合,即集合之间是不相交的。Makee用元素e开一个集合Make(e)用元素e开一个集合Makee用元素e开一个集合UnionS1S2将两个集合合并Union(S_1, S_2)将两个集合合并UnionS1S2将两个集合合并Finde返回元素。原创 2023-06-23 15:52:41 · 1157 阅读 · 0 评论 -
【算法证明 一】排序算法下界
众所周知,基于比较的排序算法的下界是Onlogn)),那么如何证明这个问题呢?今天知道了一个知识点叫:观点是廉价的,重要的是论证。所以准备对以前学过的算法进行几次刨根问底,就从排序算法的下界开始吧。证明方法来自《算法导论》原创 2023-05-25 00:21:02 · 610 阅读 · 0 评论 -
leetcode竞赛:87 场双周赛
leetcode 周赛。原创 2022-09-18 10:26:29 · 865 阅读 · 0 评论 -
leetcode竞赛:309 场周赛
本次题目比较难,体现在中等题比较难。困难题的模拟需要两个堆,思维量也比较大。原创 2022-09-04 14:27:25 · 944 阅读 · 0 评论 -
leetcode竞赛:308 场周赛
leetcode算法周赛,简要记录。原创 2022-08-28 20:04:43 · 129 阅读 · 0 评论 -
leetcode竞赛:307场周赛
就不贴链接了,leetcode直接搜题目就行。原创 2022-08-23 22:35:40 · 218 阅读 · 0 评论 -
【算法与数据结构】 二分思想
二分思想是很常见的一种思想,也很好理解。而其难点是在于实现。整理一些需要二分思想的题目,代码实现详细注释版,供学习。原创 2022-08-22 23:06:48 · 92 阅读 · 0 评论 -
编写partition算法以及随之而来的快速排序与顺序统计量,c++迭代器实现
partition算法partition算法是将数组中以其中某一个数(pivot)为限制,将数组分为两部分,前半部分小于它后半部分大于他,而枢轴(就是pivot)在中间并返回枢轴的算法。该算法在很多地方会用到,比如说:快速排序和求顺序统计量伪代码PARTITION(A, p, r)1.x = A[r]2.i = p - 13.for j = p to r - 14. if ...原创 2019-08-29 22:05:39 · 556 阅读 · 0 评论