算法
wind19
相互学习,共同进步
展开
-
多个字符串的最长公共字串
原文链接:http://imlazy.ycool.com/post.1861423.html 如果所有字符串的长度之和是L,则下面介绍的这个算法的平均效率O(L * logL),但是最坏情况下可能会再乘以O(l),l是每个字符串的平均长度。 首先对于每个字符串,取出以每个字符开头,到字符串尾的子串。比如字符串“acb”,从中取出的子串有“acb”、“cb”和“b”。如果所有字转载 2012-04-20 11:05:15 · 1095 阅读 · 0 评论 -
后缀树解析
写这篇文章,主要是因为最近有个课题设计,里面用的字符串匹配。学习后缀树之前,先了解一下Trie这个数据结构Trie是一种搜索树,可用于存储并查找字符串。Trie每一条边都对应一个字符。在Trie中查找字符串S时,只要按顺序枚举S的各个字符,从Trie的根节点开始选择相应的边走,如果枚举完的同时恰好走到Trie树的叶子节点,说明S存在于Trie中。如果未到达叶子节点,或者枚举中未发现相应转载 2012-04-20 16:03:40 · 3427 阅读 · 0 评论 -
你应该掌握的——树和二叉树
我在上课的时候,由于各种原因,上课老师讲的自己总不爱听,现在到火烧眉毛了,才知道这些基础知识的重要性,现在想想,也没有那么的困难。重在理解这些底层的概念,然后考试考的都是一些很简单的概念和计算,在这里我来阐述一下树和二叉树的一些考点。基础知识一点也不能马虎。所以我们从最基础的开始说起。以这棵树来说几个基本的概念。结点的度:一个结点的子树数目称为该结点转载 2012-03-28 10:26:29 · 957 阅读 · 0 评论 -
稳定排序和不稳定排序
这几天笔试了好几 次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前 已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人 准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前转载 2012-05-15 10:26:12 · 1132 阅读 · 0 评论 -
交换排序——冒泡和快速排序
交换排序主要有两种 冒泡 和 快速排序冒泡排序:稳定,时间复杂度 O(n^2) 将待排序的数组看做是重量不同的泡泡,从后往前遍历,把重量轻的交换到上面,(即如果data[j] void bubblesort(int data[], int len){ if(len return; int value = 0; int i =0; int原创 2012-05-15 15:19:41 · 641 阅读 · 0 评论 -
选择排序——简单选择和堆排序
简单选择排序:不稳定,时间复杂度O(n^2)void simpleselect(int data[], int len){int i =0;int j=0;for(i=0; i{ int value = data[i]; int k = i; int tmp = 0; for(j=i; j { if(data[j] {原创 2012-05-15 19:35:43 · 534 阅读 · 0 评论 -
插入排序——直接插入和希尔
插入排序主要包括 直接插入和希尔排序直接插入排序: 稳定,时间复杂度O(n^2)从第二个元素开始,将后面的数据依次插入到前面有序的队列中void derectinsert(int data[], int len){int i =1; for(; i { int value = data[i]; int j=i-1; while(j >= 0 &原创 2012-05-15 17:01:02 · 628 阅读 · 0 评论 -
使用7zip的SDK
一 去http://www.7-zip.org/sdk.html下载源代码,目前的版本是9.20二 把包解压之后有个C目录,把下面的Alloc.c,Alloc.h,LzFind.c,LzFind.h,LzFindMt.c,LzFindMt.h,LzHash.h,LzmaDec.c,LzmaDec.h,LzmaEnc.c,LzmaEnc.h,LzmaLib.c,LzmaLib.h,Threa原创 2012-07-04 11:13:26 · 7714 阅读 · 0 评论 -
数据结构学习
浙江万里学院的课件 http://sjjg.js.zwu.edu.cn/SFXX/index.html 包括链表,二叉树,图等,挺好的原创 2012-03-28 10:40:55 · 572 阅读 · 0 评论