随笔分类 -  Algorithm

关于栈和队列的相关操作
摘要:1、栈 分为顺序栈和链栈 对应数组和链表top指向栈顶元素,设置空栈为-1;存在一个元素时top=0栈的长度为StackSize定义栈的结构体: 1 #include "stdio.h" 2 3 /* 存储空间初始分配量 */ 4 #define MAXSIZE 20 5 6 /* SElemT... 阅读全文

posted @ 2015-10-29 20:08 CoolRandy 阅读(334) 评论(0) 推荐(0)

算法题解
摘要:1、利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。 1 #include 2 #include 3 #include 4 #include 5 6 /* 7 重复字符压缩 8 */ 9 void RepeatCharReduce(char *str, int n, char *... 阅读全文

posted @ 2015-06-14 16:35 CoolRandy 阅读(362) 评论(0) 推荐(0)

LeetCode算法题解
摘要:1、给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?(181)解法一:举例说明,为了减少复杂度,就使用八位二进制吧。设 A = 0010 1011, B = 0110 0101.1. C = A & B = 0010 ... 阅读全文

posted @ 2015-04-15 15:26 CoolRandy 阅读(272) 评论(0) 推荐(0)

字符串匹配算法
摘要:部分内容引用http://blog.csdn.net/v_july_v/article/details/70418271、暴力匹配算法假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式... 阅读全文

posted @ 2015-03-10 10:30 CoolRandy 阅读(191) 评论(0) 推荐(0)

单链表的各项常规操作
摘要:对于单链表的头指针,头结点的说明:单链表也是一种线性表,所以总得有个头有个尾。链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。这里有个地方要注意,就是对头指针概念的理解,这个很重要。“链表中第一个结点的存储位置... 阅读全文

posted @ 2015-03-07 21:54 CoolRandy 阅读(617) 评论(0) 推荐(0)

链表反转
摘要:/* 单链表反转/逆序 */Status ListReverse(LinkList L){ LinkList current,pnext,prev; if(L == NULL || L->next == NULL) return L; current = L->nex... 阅读全文

posted @ 2015-03-05 10:51 CoolRandy 阅读(298) 评论(0) 推荐(0)

动态规划之LCS(最大公共子序列)
摘要:#include #include int b[50][50];int c[50][50];int length = 0;void lcs(char *x, int m, char *y, int n){ int i; int j; for(i = 1; i c[i][j-1]) { c[i][j] = c[i-1][j]; b[i][j] = 2; } else { c[i][j] = c[i][... 阅读全文

posted @ 2014-04-06 18:20 CoolRandy 阅读(259) 评论(0) 推荐(0)

模式匹配
摘要:1、首先学习最简单的模式匹配问题,其实就是查找字符串的问题,问题简单描述:从一段英文字符串中查找某一个单词或一个简短的字符串,并记录下该单词在整个字符串的位置,也即起始索引在下列一组文本行中查找包含字符串”ould“的行:Ah Love! could you and I with Fate conspireTo grasp this sorry Scheme of Things entire,Would not we shatter it to bits and thenRemould it nearer to the Heart's Desire!程序执行后输出下列结果:Ah Lov 阅读全文

posted @ 2013-09-13 14:28 CoolRandy 阅读(383) 评论(0) 推荐(0)

各种查找算法实现
摘要:1. 顺序查找(Sequential Search),又叫线性查找2. 二分查找,又叫折半查找 1 package search; 2 3 /** 4 * @author lei 2011-8-17 5 */ 6 public class BinarySearch { 7 /** 8 * 二分查找 9 * 10 * 注意:二分查找只是针对有序排列的各种数组或集合11 * 12 * @param target13 * @param array14 * @return15 */16 static ... 阅读全文

posted @ 2013-08-15 16:16 CoolRandy 阅读(386) 评论(0) 推荐(0)

Tree
摘要:1、Binary search Tree结点的度(degree):结点拥有的子树数;度为0的称为叶子结点;树的度是树内各节点的度的最大值;结点的层次(Level)从根开始定义起,根为第一层,树的结点的最大层次称为树的深度(Depth)或高度;森林(Forest)是m(m>=0)棵互不相交的树的集合;二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。性质:1、二叉树的第i层至多有个结点;2、深度为k的二叉树至多有个结点;3、对任何一棵二叉树T,如果其终端结点数为,度为2的结点数为,则。特殊的二叉树:1、斜树(即线性表结构);2、满二叉树;3、完 阅读全文

posted @ 2013-07-04 13:59 CoolRandy 阅读(402) 评论(0) 推荐(0)

各类排序算法实现
摘要:#define MAXSIZE 10typedef struct{ int r[MAXSIZE + 1]; int length;}SqList;void swap(SqList *L,int i, int j){ int temp = L->r[i]; L->r[i] = ... 阅读全文

posted @ 2013-07-02 15:53 CoolRandy 阅读(483) 评论(0) 推荐(0)