![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 64
一些算法知识
qq_45849888
安静地写一些学习总结。
展开
-
最大堆 维护及其建立 堆排序算法
1.最大堆父节点的值一定≥\ge≥其子节点,且堆的根节点是最大的。2.维护最大堆约定:1.用数组A来存储堆2.参数i表示调整堆上该节点,以保持堆的性质(此处的节点值可能小于其儿子节点,如果其存在儿子节点的话)伪代码:MAX-HEAPIFY(A, i) lSon = left-son(i) rSon = right-son(i) // 判断左儿子节点 if lSon<A.length and A[i]<A[lSon] largest = lSon else la原创 2020-11-09 22:01:38 · 852 阅读 · 0 评论 -
Strassen 矩阵乘法
最普通的矩阵乘法,需要乘n3n^3n3次,时间复杂度为O(n3)O(n^3)O(n3)分治递归计算矩阵相乘复杂度也为O(n3)O(n^3)O(n3),没有体现优越性使用Strassen计算每一步递归中乘法次数由8次变为7次(以增加减法次数为代价),时间复杂度下降为O(nlg7)O(n^{lg7})O(nlg7)在矩阵维数很大时增加一次乘法的代价远超过多次加减法的代价。...原创 2020-11-09 21:10:27 · 560 阅读 · 0 评论 -
最大子数组问题 C++分治与动态规划求解
0.问题定义1.分治解法代码如下:#include <iostream>using namespace std;struct info { int sum, low, high; info(int sum_, int low_, int high_) : sum(sum_), low(low_), high(high_) {}};class maxSubarrayProblem {private: int *arr; int size;public: maxS原创 2020-11-09 17:06:45 · 1006 阅读 · 0 评论