随笔分类 -  Algorithm

最近公共祖先 tarjan离线算法 C++
摘要:最近做到一道题目,大概的意思就是求一个多叉树中两个节点的最近公共祖先,输入是用邻接矩阵表示的。要想理解tarjan算法并实现它,需要先理解一下内容:1) 深度优先搜索;tarjan算法核心思想:当某节点刚刚搜索完毕时,看与其相关的结点v是否已经被访问,如果v已经被访问过了,则它们的最近公共祖先就是v... 阅读全文

posted @ 2015-04-26 14:18 Natsukashiii 阅读(1166) 评论(0) 推荐(1) 编辑

DFS栈实现 C代码
摘要:这里代码写的比较随意,直接使用数组下标作为索引,而结点就是用0到n-1来表示。类似于递归调用的思想(感觉就是把递归调用里面的调用栈用简单的栈数组来替代一下)。这里对于栈顶的元素,如果它为白色,则全局时间变量加一,且把它邻接链表里的白色节点全部入栈;而如果栈顶元素已经是灰色,就把它变成黑色,时间全局变... 阅读全文

posted @ 2015-04-15 15:23 Natsukashiii 阅读(1462) 评论(0) 推荐(0) 编辑

邻接链表线性时间去重 C代码 算法导论 22.1-4
摘要:这里利用直接寻址法去重,遍历链表,如果对应数组位置值为0,则修正为1,如果对应数组为1,则删除该节点。(数组初始化为0)链表的一些操作都简单的实现了一下。#include #include #include struct Node{ int key; Node *next;};struc... 阅读全文

posted @ 2015-04-14 12:50 Natsukashiii 阅读(502) 评论(0) 推荐(0) 编辑

二叉树的遍历
摘要:前面几种遍历方法比较简单,说明一下最后一种1. 如果路径上前一个节点是父节点,则往左孩子方向走2. 如果路径上前一个节点是左孩子,则往右孩子方向走3. 如果路径上前一个节点是右孩子,则往父节点方向走处理下孩子缺失的情况1. 如果只有一个右孩子且从父节点过来,往右孩子方向走 (有右无左)2. 如果从左... 阅读全文

posted @ 2015-04-12 20:46 Natsukashiii 阅读(180) 评论(0) 推荐(0) 编辑

多数组实现链表结构 c++实现代码
摘要:对每个属性使用一个数组表示,多数组可以表示一组同构的对象。指针放在额外的数组中,用下标来表示。这次实现代码基于10.3-5, 主要为了实现compacitify 操作,即把链表的所有元素在存储器中保持紧凑,本题是都放到前n个位置(n个元素)。思想是从网上看来的,移动元素的过程中保持链表中元素的相互指... 阅读全文

posted @ 2015-04-12 14:34 Natsukashiii 阅读(1195) 评论(0) 推荐(1) 编辑

双端队列C实现代码 算法导论10.1-5 10.1-6 10.1-7
摘要:数组实现双端队列的时候注意区别判断上溢和下溢。用两个栈实现队列,就相当于把两个栈底靠在一起(背靠背),一个栈用来出队列,一个栈用来进队列。这个队列的操作时间大部分时候是常数时间,除了出列的栈为空,需要把进列的栈全部转移过去,再出列。Back()操作和Pop()操作类似,也是这样。而两个队列实现栈,队... 阅读全文

posted @ 2015-04-11 20:01 Natsukashiii 阅读(1780) 评论(0) 推荐(1) 编辑

顺序统计量
摘要:顺序统计量有关算法得与快速排序的分割联系起来#include #include using namespace std;typedef int index;index Rand_Partition(int *a, index p, index r);index Partition(int *a, i... 阅读全文

posted @ 2015-04-11 16:26 Natsukashiii 阅读(154) 评论(0) 推荐(0) 编辑

列排序算法
摘要:It is amazing!列排序算法看起来很奇怪,但是它真的可以用来对所有数据排序,只不过需要有一些条件。列排序算法是用于包含n个元素的矩形数组的排序,这个数组r行s列,满足下面三个条件:1) r为偶数2) s为r的因子3) r大于等于2s2这里就不去证明这个算法的正确性,证明见算法导论思考题8-... 阅读全文

posted @ 2015-04-10 19:17 Natsukashiii 阅读(233) 评论(0) 推荐(0) 编辑

k路归并 算法导论8-4(e)
摘要:使用STL中priority_queue(由最大最小堆实现的)来实现。注意传递参数的时候需要传递三个。模板声明:priority_queue这里的实现要求输入完全正确,所以代码移植性非常差。#include #include #include using namespace std;typedef ... 阅读全文

posted @ 2015-04-10 13:32 Natsukashiii 阅读(128) 评论(0) 推荐(0) 编辑

水壶问题 算法导论8.4
摘要:水壶问题要求我们把红蓝水壶进行配对。如何才能让红蓝水壶一一对应,那就是分别对它们进行排序。所以这里借助快排的思想来进行排序,红水壶数组使用蓝水壶中的pivot来排序,蓝水壶使用红水壶中的pivot来排序。由于前提条件红水壶有一个对应的蓝水壶,反之亦然,且红水壶内部各不相同,所以排序就很简单,稍微修改... 阅读全文

posted @ 2015-04-10 10:30 Natsukashiii 阅读(582) 评论(0) 推荐(0) 编辑

变长数据项的排序 算法导论8.3 8.3.4(e)
摘要:第一步,先按数据的长度排序,计算出数据的长度(一般大小为正整数),然后按计数排序的方法排序第二步,对相同长度的数据进行基数排序。基数排序采用计数排序作为稳定排序。这里遇到了一个问题,第二问对字符串按字典序排列(a#include #include using namespace std;const ... 阅读全文

posted @ 2015-04-09 22:37 Natsukashiii 阅读(781) 评论(0) 推荐(0) 编辑

模糊排序 算法导论7.6 c++实现代码
摘要:题目读起来有点晦涩,理解之后思路比较容易想到。其实就是排序的元素换成了闭区间,而闭区间‘相等’就是这些区间有公共的区域(等价类),这样就类似于习题7.2了,返回两个下标,它们之间是相等的元素,前面是‘较小’的区间,后面是‘较大’的区间。那么如何求公共子区间呢,我这里是从前往后遍历数组,如果有交叠,... 阅读全文

posted @ 2015-04-08 13:21 Natsukashiii 阅读(596) 评论(0) 推荐(0) 编辑

Young氏矩阵类C++实现代码 算法导论6.3
摘要:个人总结:1.int **p和 int a[M][N]之间的区别: 1) int **指向指针的指针;而后者的类型是数组名,类型为 int (*)[N],即指向的是整个一行。 2) (a+1) 表示地址增加M*sizeof(int),需要注意的一点是a[i]是第i行开头的地址,&a和a的值是一样的。... 阅读全文

posted @ 2015-04-07 21:11 Natsukashiii 阅读(197) 评论(0) 推荐(0) 编辑

快速排序实现代码 算法导论7.1 7.2 7.4
摘要:快速排序通常是实际排序中应用最好的选择,因为平均性能很好,且是原址排序,不稳定。书上的大部分内容在分析其运行时间,感觉看一下就好了(还是蛮喜欢数学的,可是。。。)#include #include #include using namespace std;//实际应用比较多,原址排序typedef ... 阅读全文

posted @ 2015-04-06 21:36 Natsukashiii 阅读(341) 评论(0) 推荐(0) 编辑

算法导论 6-2 代码实现 C++
摘要:D叉堆不同的地方就是父节点和孩子节点在数组中的索引,C++代码,希望不要误人子弟。#include #include #include using namespace std;template //D叉堆class Heap_t{public: Heap_t(vector &ptr, int... 阅读全文

posted @ 2015-04-05 19:54 Natsukashiii 阅读(198) 评论(0) 推荐(0) 编辑

最大堆/最小堆/优先队列 实现代码(c++)
摘要:自我感觉代码写的比较乱,这方面要好好注意一下。总结:1.在使用vector::size_type 类似的类型时,千万要注意循环的条件判断,很容易发生溢出的危险!所以我最后很懒的选择使用int - -。2.下标表示和元素个数表示之间的细微差别。下标之间的变换关系:父节点 parent(i)=(i-1)... 阅读全文

posted @ 2015-04-05 16:30 Natsukashiii 阅读(1508) 评论(0) 推荐(0) 编辑

插入排序和归并排序的实现代码(C++)
摘要:插入排序和归并排序是算法导论先讲到的两中排序方法。 插入排序的思路是对于一个已经排好序的数组,现在新插入一个元素并且保持其有序。那么该如何插入呢,从数组最后一个元素开始进行比较,直到遇到比小于等于自己的元素,然后插入到该元素的后面(所以插入是稳定的)。循环不变式:子数组一直保持有序(使用循环不变式... 阅读全文

posted @ 2015-04-05 16:19 Natsukashiii 阅读(651) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示