
数据结构与算法
文章平均质量分 82
wujiezhainan
这个作者很懒,什么都没留下…
展开
-
BF,KMP,AC详解
一.BF算法BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。此算法的思想是直截了当的:将主串S中某个位置i起始的子串和模式串T相比较。即从 j=0 起比较 S[i+j] 与 T[j],若相等,则在主串转载 2013-05-17 10:47:12 · 589 阅读 · 0 评论 -
字典树
统计难题Problem DescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行原创 2013-05-24 11:38:46 · 450 阅读 · 0 评论 -
排序算法稳定性小结
转自:http://www.cnblogs.com/codingmylife/archive/2012/10/21/2732980.html首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好转载 2013-05-30 15:18:12 · 432 阅读 · 0 评论 -
排序算法总结3-插入排序
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法描述一般来说,插入排序都采用in-place在原创 2013-05-30 17:06:27 · 502 阅读 · 0 评论 -
排序算法总结2-直接选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其原创 2013-05-30 15:10:23 · 723 阅读 · 0 评论 -
排序算法总结1-冒泡排序
一.冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。算法原理冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同原创 2013-05-30 11:26:23 · 719 阅读 · 0 评论 -
图的遍历
转自:http://blog.chinaunix.net/uid-26833883-id-3171290.html 图的遍历是树的遍历的推广,是按照某种规则(或次序)访问图中各顶点依次且仅一次的操作,亦是将网络结构按某种规则线性化的过程。 由于图存在回路,为区别一顶点是否被访问过和避免顶点被多次访问,在遍历过程中,应记下每个访问过的顶点,即每个顶点对应有一个标志位,初始为Fal转载 2013-06-08 23:13:49 · 404 阅读 · 0 评论 -
排序算法总结4-堆排序
堆排序的主要步骤:1 根据数组,从非叶子结点开始,建立最大(小)堆。2 交换第一个结点和最后一个结点的数据,此时最后一个结点即为最大(小)值。此时前面n-1个数据重新调整堆。按此循环到结束。#includevoid swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}原创 2013-06-07 16:40:42 · 460 阅读 · 0 评论