Algorithms
文章平均质量分 63
JohnCusack
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
稳定排序和不稳定排序
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐次按高位排序原创 2015-04-13 17:05:09 · 561 阅读 · 0 评论 -
KMP算法中关于构造DFA部分的纠结
在《算法》(Sedgewick)一书中,看到了KMP算法,看了一遍没懂,但觉得挺神奇的,就花费了几个小时深入的理解。算法的原理其实不难,难的就是那个神奇的DFA数组,我的大部分时间也都是花费在这个数组上面的。以下从豆瓣读书找来的问题及答案,看着不错,就给抠来了~出处:http://book.douban.com/subject/19952400/discussion/59623403/原创 2015-04-16 15:23:49 · 2514 阅读 · 4 评论 -
回溯算法(BackTracking)--八皇后问题
0) 回溯算法:回溯算法也算是遍历算法的一种,回溯算法是对Brute-Force算法的一种改进算法,一个典型的应用是走迷宫问题,当我们走一个迷宫时,如果无路可走了,那么我们就可以退一步,再在其他的路上尝试一步,如果还是无路可走,那么就再退一步,尝试新的路,直到走到终点或者退回到原点。1) 皇后问题:N皇后问题是指在N*N的棋盘上放置N个皇后,使这N个皇后无法吃掉对方(也原创 2015-04-17 11:06:40 · 926 阅读 · 0 评论 -
常见数据结构查找、插入、删除、遍历性能比较 常见排序算法的比较(图)
排序法 平均时间最差情形稳定度额外空间备注冒泡 O(n2) O(n2) 稳定O(1)n小时较好交换 O(n2) O(n2)不稳定O(1)n小时较好选择原创 2015-04-17 21:43:43 · 962 阅读 · 0 评论 -
建堆过程
堆排序中,最初的步骤就是建立一个堆。之前在一些公司的笔试题上面见到一些与建堆过程相关的题目,因为当时对建堆过程有个误解,所以经常选错。之前一直以为是在完全二叉树中依次插入序列中的元素,每插入一个元素,就调用siftup操作;而实际的建堆操作是序列中元素首先就全部填入一个完全二叉树,然后从第一个非终端节点开始,调用siftdown操作,依次调整。以下是一篇关于建堆过程的文章,转载自:http原创 2015-04-17 22:07:01 · 1167 阅读 · 0 评论 -
KMP代码-总结
假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置,则有:如果当前字符匹配成功(即S[i] == P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]! = P[j]),令i = i - (j - 1),j = 0转载 2015-05-27 15:14:43 · 776 阅读 · 0 评论
分享