算法
文章平均质量分 69
MC丶吼吼
跪求offer养家糊口。。
展开
-
串匹配算法_KMP
串匹配串匹配问题即是:如何在字符串数据中,检测和提取以字符串形式给出的某一局部特征一般的,即:对基于同一字符表的任何文本串T(|T|=n)和模式串P(|P|=m): 判定T中是否存在某一子串与P相同 若存在(匹配),则报告该子串在T中的起始位置测评标准及策略 如何对任一串匹配算法的性能作出客观的测量和评估,多数人首先会想到采用算法性能的常规口径和策略:以时...原创 2018-07-01 17:14:56 · 568 阅读 · 0 评论 -
串匹配算法_BM
BM算法KMP算法的思路可以概括为:当前比对一旦失配,即利用此前的比对所提取的信息,尽可能长距离的移动模式串。其精妙之处在于,无需显示地反复保存或更新比对的历史,而是独立于具体的文本串,事先根据模式串预测出所有可能出现的适配情况,并将这些信息浓缩成一张next表。 在这里介绍的BM算法与KMP算法类似,区别仅仅在于预测和利用“历史”信息的具体策略与方法。BM算法中,模式串P与文本串T的位置依...原创 2018-07-02 19:41:04 · 909 阅读 · 0 评论 -
串匹配算法_KMP、BM、BF效率总览
串匹配算法_KMP、BM、BF效率总览在针对串匹配问题中,依次介绍了蛮力、KMP、基于BC表、综合BC表和GS表等四种算法,这里对其复杂度来做一个总结。1、在BF算法中,知道在最好的情况下蛮力算法的时间复杂度为O(n+m),最坏的情况下时间复杂度为O(n*m),分别如下图所示两种情况: 2、在KMP算法中,知道总体花费的时间为O(n+m)。其中next表的构造花费O(m)的时间。...原创 2018-07-02 20:17:55 · 1413 阅读 · 0 评论 -
排序算法总结
冒泡排序时间复杂度为O(n2),最好情况下为O(n),空间复杂度为O(1)。稳定的冒泡排序总结:void swap(int &a,int &b){ int temp=a; a=b; b=temp;}void buble_sort1(int A[],int n){ for(int i=0;i<n-1;++i) { for(int j=i+1;...原创 2018-08-02 14:08:35 · 123 阅读 · 0 评论 -
啊哈算法(7)——神奇的树
1、堆(完全二叉堆)建堆的方法:(自上而下的向上调整)每一次插入一个新节点,并且对其进行向上调整,实现如下:/*建立最小堆,方法一*/#include<iostream>using namespace std;int h[101]; //对于n个节点的堆void swap(int a, int b){ int temp = h[a];...原创 2018-08-26 14:27:42 · 341 阅读 · 0 评论 -
啊哈算法(8)——更多精彩的算法
1、图的最小生成树(Kruskal算法) 对于一个给定的图,找出其最小生成树,用最少的边让n个顶点的图连通,很显然若要让n个顶点的图连通,最少要n-1条边,最小生成树还需要满足这n-1条边的权重和最小。例如对于如下输入实例:6 92 4 113 5 134 6 35 6 42 3 64 5 71 2 13 4 91 3 2第一行n和m,n表示有n个顶点,m表示有m条...原创 2018-08-27 21:09:54 · 640 阅读 · 0 评论 -
啊哈算法(4)—万能的搜索
深度优先搜索DFS 深度优先搜索的关键在于解决“当下该如何做”。至于下一步怎么做与当下该如何做是一样的。深度优先搜索的基本模型:void dfs(int step){ 判断边界 尝试每一种可能for(i=1;i&amp;lt;=n;++i) 继续下一步dfs(step+1);}例1:求1到n的全排列,n为1~9之间任意一个数。//求1到n的全排列 想相...原创 2018-08-24 11:23:41 · 1084 阅读 · 0 评论 -
啊哈算法(5)——图的遍历
图的深度优先遍历和广度优先遍历 1、深度优先遍历#include<iostream>using namespace std;int e[101][101];//使用邻接矩阵来存储一个图int book[101];int sum, n;void dfs(int pos){ cout << pos << " "; sum...原创 2018-08-24 15:35:36 · 564 阅读 · 0 评论 -
啊哈算法(6)——最短路径
最短路径 问题:对于一个给定的的图求出任意两点之间的最短路径? 可以通过DFS或者BFS求出两个点之间的最短的路径,在本节介绍其他的算法来求出两个点之间的最短路径。 1、Floyd-Warshall(不能解决带负权环路的图) 思想:若要让两个顶点之间的距离变小,只有通过一个顶点中转,甚至可能经过多个顶点中转,假定输入如下:4 81 2 21 3 61 4 42 3 33 1 ...原创 2018-08-25 20:57:30 · 470 阅读 · 0 评论