BF算法

 算法思想解析:

   BF(Brute Force)算法也就是传说中的“笨办法”,是一个暴力/蛮力算法。设串S和P的长度分别为m,n,则它在最坏情况下的时间复杂度是O(m*n)。BF算法的最坏时间复杂度虽然不好,但它易于理解和编程,在实际应用中,一般还能达到近似于O(m+n)的时间度(最坏情况不是那么容易出现的,RP问题),因此,还在被大量使用。

 BF算法_第1张图片


代码实现:


#include
#include
#include
#define MaxSize 20
typedef struct
{
    char data[MaxSize];
    int length;
} SqString;
int index(SqString s,SqString t)
{
    int i=0,j=0;
    while(i=t.length)//返回匹配的第一个字符的下标
    {
        return (i-t.length);
    }
    else//匹配模式不成功
    {
        return -1;
    }
}
void StrAssign(SqString &s,char cstr[])
{
    int i;
    for(i=0; cstr[i]!='\0'; i++)
    {
        s.data[i]=cstr[i];
    }
    s.length=i;
}
int main()
{
    SqString S,T;
    char str1[20];
    char str2[20];
    gets(str1);
    gets(str2);
    StrAssign(S,str1);
    StrAssign(T,str2);
    index(S,T);
    return 0;
}

   运行截图:

BF算法_第2张图片

总结:

   由运行截图可知该算法的效率很低,一次匹配不对,就需子串归零回朔重新匹配。但该算法易于理解,适合初学者学习。



你可能感兴趣的:(数据结构)