![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
李家那小二
这个作者很懒,什么都没留下…
展开
-
欢迎使用CSDN-markdown编辑器
算法导论-矩阵相乘(SQUARE-MATRIX-MULTIPLY) c++算法小白慢慢入门中~这段代码主要问题是对二级指针和二维数组的理解上的问题,具体参考二维数组和二级指针 二级指针是指向指针的指针,二维数组其实依然是一维数组,只是每个数组成员是一个数组,所以最终组合成二维数组,故用指针指向二维数组时,不能使用二级指针,正确做法如下:int a[2][2];int (*p)[2] = a;这个原创 2017-03-09 09:43:02 · 249 阅读 · 0 评论 -
堆排序
利用二叉树的特性实现堆排序#include<iostream>using namespace std;//节点从0开始所以会多1int left(int i){ return i * 2 + 1;}int right(int i){ return i * 2 + 2;}//使得节点i及其子节点都是最大堆void Max_Heapfiy(int *A, int length原创 2017-04-12 13:58:16 · 212 阅读 · 0 评论 -
counting-sort
继续学习算法 #include<iostream>void count_sort(int* A, int count, int *B, int k){ int* C = new int[k]; for (int i = 0; i < k; i++) { *(C + i) = 0; } for (int i = 0; i < count; i+原创 2017-06-08 16:35:00 · 253 阅读 · 0 评论 -
基点算法
基点算法的思想,是将相关联的数据,拆成某种特定的单元,然后对单元排序。 算法的核心点在于两个:拆和单元排序。 拆成何种结构,这个需要特定场景,但是拆出来后一定能单元排序 单元排序则是实际排序的算法,差异比较大。本例中处理的是三位数的排序,故拆成3个个位数就好,单元排序采用的是计数排序#include<iostream>int getDigit(int A, int index)//获取A在in原创 2017-06-09 16:38:22 · 511 阅读 · 0 评论 -
二叉搜索树的删除和添加
和算法导论上说明的一样,主要是实现下,给自己留着备用。struct Tree{ int value; Tree* l_child; Tree* r_child; Tree* parent;};void deleteNode(Tree * tree, Tree* node){ Tree* temp = node->parent; if (node-原创 2017-08-02 16:01:28 · 244 阅读 · 0 评论 -
算法导论之红黑树
红黑树是特殊的搜索树,除了要满足搜索树外,还得满足color的要求。原则上说树的所有操作只有两种:插入和删除。 基本知识左旋、右旋、最小后继和节点替换不在重复。只针对插入和删除,说其内部原理。插入:插入一个元素时,由于红黑树根本也是一棵搜索树,所以可以先用搜索树的方式插入一个元素。由于在末尾添加的元素,如果置黑,可能导致其他树的黑路径长度少一。置红的话就不存在这个问题,只会存在两个红节点相邻的问题原创 2017-08-28 14:30:12 · 403 阅读 · 0 评论 -
动态规划-最长回文子序列
最长回文子序列,处理办法和最长公共子序列类似,不过是子问题发生了改变,在当前问题中,子问题是在首部和尾部的字符是否一样,开展形式和LCS一致,附上递归和for循环的代码。int lengthdp[100][100] = {};string resultDp[100][100] = {};void Palindrome2(char const* chars, int start, int end)原创 2017-10-18 09:30:42 · 469 阅读 · 0 评论 -
动态规划的两种方式
动态规划问题的两种处理方式:自底向上和自上向下。各自有各自的优势,以算法导论上的钢铁切割为例,贴出代码缓存一下。int maxvalue(int cur_length, int left){ int value1 = 0; if (a[left] || left == 0) { value1 = a[left]; } else {原创 2017-10-09 17:44:09 · 1319 阅读 · 0 评论 -
动态规划-LCS的两种求解策略
学习动态规划的过程中,看到了LCS的解决方案,正巧之前做过类似的问题,不过没有用到动态规划的思想,先确定第一个相同的字符,在比较后续内容,会多一个系数。先确定第一个相同的字符在X中的位置,然后遍历,由于没有考虑缓存的机制,导致最后结果不理想。其实思想是差不多的,不过我是从头部到尾部,算法导论上是从尾部到头部。我自己的是自上到下,算法导论是自下到上 。LCS核心的问题,其实回到要如何分析问题,如果不能原创 2017-10-17 10:31:06 · 711 阅读 · 0 评论