比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统与流程

文档序号:16931771发布日期:2019-02-22 20:20阅读:368来源:国知局
比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统与流程

本发明涉及计算机数据处理领域,具体涉及比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统。

技术背景

数据搜索方法也可以称为数据匹配方法,数据搜索是计算机技术的重要运用,在实时文本的处理,文件搜索系统,实时数据分析,大数据分析、舆情自动调查系统等等技术中常常用到。现有技术面向全新数据的时间效率存在改进空间,现有技术的空间效率存在改进空间,现有技术对计算机资源的运用不充分存在改进空间。



技术实现要素:

本发明提出了比特位序列、数据搜索方法、搜索系统、社会网络分析系统、舆情监控系统,可以提高时间效率,提高空间效率,提高计算机资源的利用率。

本发明的技术内容具体如下:

1、比特位序列,其特征在于:用于储存数据串匹配状况投票,比特位序列用于投票的比特位数小于或等于所应用计算机一次处理数据的比特位数;比特位序列用于储存数据串的元素对整个数据串各个位置与需搜索子串的匹配状况的支持权限或否决权限,比特位序列整体对应一个数据串,比特位序列中各个比特位各自单独对应数据串的一个元素。

2、比特位序列,其特征在于:比特位序列用于投票的比特位数,小于比特位序列的比特位总数。

3、如技术内容1所述比特位序列,其特征在于:比特位序列中比特位与数据串元素的对应方式是按序对应。

4、如技术内容2所述比特位序列,其特征在于:比特位序列中比特位与数据串元素的对应方式是同序对应,即比特位序列中第一个比特位对应数据串的第一个元素,比特位序列中第二个比特位对应数据串的第二个元素,比特位序列中第三个比特位对应数据串的第三个元素,依此类推。

5、如技术内容2所述比特位序列,其特征在于:比特位序列中比特位与数据串元素的对应方式是逆序对应,即比特位序列中第一个比特位对应数据串的倒数第一个元素,比特位序列中第二个比特位对应数据串的倒数第二个元素,比特位序列中第三个比特位对应数据串的倒数第三个元素,依此类推。

6、如技术内容1~4所述比特位序列,其特征在于:比特位序列中比特位以1代表支持,以零代表否决。

7、如技术内容1~4所述比特位序列,其特征在于:比特位序列中比特位以1代表否决,以零代表支持。

8、比特位序列表,其特征在于:针对技术内容1~6中任一技术内容所述的比特位序列的储存;

将多个比特位序列数据整合成比特位序列表,所有的比特位序列的比特位数均相等;

比特位序列表拥有两个查询变量,第一查询变量对应数据串元素在数据串中的序列位置,第二查询变量对应数据串中序号等于第一查询变量的值的数据串元素的值。

9、比特位序列表的构造方法,其特征在于:针对技术内容7所述比特位序列表的构造方法;

所有的比特位序列数据均对应同一个需搜索的子串;

为了方便表述,设比特位序列表中某个元素的第一查询变量为j、第二查询变量为ca,将比特位序列表的该元素表述为biao[j][ca],假设数据串的第一个元素的序号为w;

biao[j][ca]所储存的比特位序列对在数据串中位置序号大于j的数据串元素的匹配状况没有否决权限;(比如j=4,子串长度为3,则biao[j][ca]所储存的比特位序列对数据串的下标大于4的数据串元素的匹配状况没有否决权限;

biao[j][ca]所储存的比特位序列对在数据串中位置序号小于j且序号到j的步长大于子串长度的数据串元素的匹配状况没有否决权限;(比如j=4,子串长度为3,则biao[j][ca]所储存的比特位序列对数据串的下标小于1的元素的匹配状况没有否决权限);

如果ca与序号为k的子串元素的值相等,那么biao[j][ca]所储存的比特位序列对数据串中位置序号等于j-k+w的数据串元素的匹配状况为支持票;

如果ca与序号为k的子串元素的值不相等,那么biao[j][ca]所储存的比特位序列对数据串中位置序号等于j-k+w的数据串元素的匹配状况为否决票;

以上规则,没有时间上的先后顺序限定。

10、比特位序列表的构造方法,其特征在于:针对技术内容7所述比特位序列表的构造方法;

所有的比特位序列数据均对应同一个需搜索的子串;

为了方便表述,设比特位序列表中某个元素的第一查询变量为j、第二查询变量为ca,将比特位序列表的该元素表述为biao[ca][j],假设数据串的第一个元素的序号为w;

biao[ca][j]所储存的比特位序列对在数据串中位置序号大于j的数据串元素的匹配状况没有否决权限;

biao[ca][j]所储存的比特位序列对在数据串中位置序号小于j且序号到j的步长大于子串长度的数据串元素的匹配状况没有否决权限;

如果ca与序号为k的子串元素的值相等,那么biao[ca][j]所储存的比特位序列对数据串中位置序号等于j-k+w的数据串元素的匹配状况为支持票;

如果ca与序号为k的子串元素的值不相等,那么biao[ca][j]所储存的比特位序列对数据串中位置序号等于j-k+w的数据串元素的匹配状况为否决票;

以上规则,没有时间上的先后顺序限定。

11、如技术内容9或10所述的比特位序列表的构造方法,其特征在于:所述的序号从0开始计数即w的值0。

12、如技术内容9或10所述的比特位序列表的构造方法,其特征在于:所述的序号从1开始计数即w的值1。(部分编程语言的数组访问计数从1开始,比如易语言)

13、数据匹配获取方法,其特征在于:用于判断数据串与需搜索子串的匹配状况;

数据串的长度小于或等于比特位序列表的比特位序列的比特位数量;

流程a、利用技术内容8或9所述的比特位序列表的构造方法根据需搜索子串的数据构建比特位序列表biao[][];

流程b、将数据串各个元素的位置序号作为第一查询变量,将数据串各元素的值作为第二查询变量(bz1.1),在特位序列表中查询到数据串各个元素对应的比特位序列(sj1.3),并统计投票信息,获得的统计数据获得数据串各个位置与子串的投票结果序列;

在时间顺序上流程a在流程b之前。

流程a、b在时间上可以相衔接,也可以在流程a、b之间插入其他流程。

14、如技术内容10所述的,数据搜索方法,其特征在于:采用一票否决的方式进行统计获得投票结果序列(bz2.3)。

15、如技术内容10所述的,数据搜索方法,其特征在于:采用累加支持票的方式进行统计,如果数据串某元素的累加值等于需查找子串的长度值,则说明该数据元素为完全匹配位置。

16、数据搜索方法,其特征在于:

用于向被搜索的母串(bei->str)中获取需搜索的子串(xu->str)的匹配位置,母串(bei->str)长度(bei->size)大于或等于子串(xu->str)的长度(xu->size);

母串元素的取值范围固定,母串元素的取值范围在母串加载之前可以预见,子串元素的取值范围固定,子串元素的取值范围在子串加载之前可以预见;

包含以下流程:

流程a、利用技术内容8或9所述的比特位序列表的构造方法根据需搜索子串的数据构建比特位序列表biao[][];

流程b、利用流程a构造的比特位序列表biao[][]对母串进行匹配操作,匹配规则如下:

步骤1、依据母串的排列顺序,取数据串,所取数据串长度的数量等于比特位序列表biao[][]的元素所储存比特位序列中用于投票的比特位的总数;参见附图中的(youmo)

步骤2、查询数据串中尚未查询过的数据的比特位序列,上次执行本步骤时已经查询过的元素则不查询,将数据串各个元素的位置序号作为第一查询变量,将数据串各元素的值作为第二查询变量(bz1.1、bz1.2、bz1.3),在比特位序列表中查询到数据串各个元素对应的比特位序列(sj1.1、sj1.2、sj1.3),采用一票否决(bz2.1、bz2.2、bz2.3)的方式统计数据串中所有元素的投票信息,包括上次执行本步骤所保留的投票信息,获得投票结果序列(sj2.1、sj2.2、sj2.3);

设有数据串中位置k,如果k到数据串的尾部的步长大于等于‘子串(xu->str)的长度(xu->size)减1的结果数’,则k位于匹配区(pipei);

如果k到数据串的尾部的步长小于‘子串(xu->str)的长度(xu->size)减1的结果数’,则k位于滑动区(hudong);

如果k的序号大于滑动区的最大序号,则k无意义(sj2.3中ny);

位于匹配区的且投票结果为支持的位置是匹配位置,对匹配位置进行记录(bz3.1、bz3.2、bz3.3);

位于滑动区的且投票结果为支持的位置集中序号最小的位置为滑动位置;

步骤3、如果当前获得的匹配位置的总数小于需要找到的匹配位置的数量,且数据串未取到母串最末端,则进入步骤4,否则进入流程c;

步骤4、如果a2所得投票结果序列(sj2.1)中具有滑动位置,则将投票结果序列(sj2.1)中对应滑动位置及滑动位置之后的投票信息保留下来,将其他信息抹除,以滑动位置为步骤1取数据串的首位置进入步骤1(参见图2中左下角);

如果a2所得投票结果序列(sj2.1)中没有滑动位置,则在不保留投票结果序列(sj2.1)中的任何信息的情况下,以当前数据串尾端所对应的母串元素的位置的下一个位置为步骤1取数据串的首位置进入步骤1。

流程c、完成。

17、如技术内容13所述的数据搜索方法,其特征在于:将投票结果序列(sj2.1)中对应滑动位置及滑动位置之后的投票信息保留下来,将其他信息抹除,方法是利用计算机的位操作指令进行位移操作(图2的bz6)。

18、如技术内容14所述的数据搜索方法,其特征在于:所述的位操作指令是位移指令。

19、文件搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

20、文件管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

21、数据搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

22、数据管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

23、文本搜索系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

24、文本管理系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

25、搜索引擎,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

26、舆情监控系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

27、大数据分析系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

28、人工智能系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

29、社会网络分析系统,其特征在于:具有技术内容1~15中任一技术内容所述的技术方案。

技术效果说明:

本发明可以提高时间效率,提高空间效率,提高计算机资源的利用率,本发明提供了一条新思路。本发明能够充分的利用计算机处理器资源,使得获取数据匹配的速度加快。

附图说明

图1是本发明实施例1的测试例的示意图,为了帮助阅读者理解,图1中绘制了用于取数据串的youmo的逻辑结构,youmo并非具体存在,youmo具有8个虚构的逻辑单元,youmo的第一个单元y0与母串bei->str的下标为i的元素对应,youmo的第二个单元y1与母串bei->str的下标为i+1的元素对应,以此类推,按顺序对应;图1中bz1.1是在比特位序列表中查询数据串各个元素对应的比特位序列(sj1.1);图1中b2.1代表对sj1.1的各个比特位序列的投票信息进行一票否决式统计,图1中sj2.1是b2.1统计所获得的‘投票结果序列’,其中pipei段中值为1的比特位所对应的位置为匹配位置,huadong段中值为1的比特位所对应的位置为滑动位置。图1中sj1.1、sj2.1的下方的顺序排列的数字为各个比特位在比特位序列中的序号。图1中bei->str下方的顺序排列的数字为各个元素在母串中的序号。

图2是本发明实施例1的测试例的示意图,在时间顺序上承接于图1,由于图1获得了一个滑动位置6,所以图2的游youmo的第一个单元y0对应bei->str[6]。图2中sj2.1即图1中的sj2.1,由于图1中获得了滑动位置,图2对图1的huadong段的内容通过位移操作(bz6)进行了保留,位移操作后sj2.1的第7位(下标为6)和第8位(下标为7)保留在sj3的第1位(下标为0)和第二位(下标为1);为了不影响后续的投票,将sj3和sj4进行位或操作(bz4)得到比特位序列sj5作为投票信息;由于bei->str[6]、bei->str[7]在图1中已经被读取过,bei->str[6]、bei->str[7]的投票信息也被保存在sj5中,所以不必重复读取,所以查表操作从对应bei->str[8]的y2开始。

图3是本发明实施例1的测试例的示意图,在时间顺序上承接于图2,由于图2中没有滑动位置,图3的滑动从14开始(6+8=14);由于youmo取到了bei->str的末端,所以搜索结束。由于图3中代表数据串的长度只有7,而比特位序列的长度为8,导致代表投票结果的‘投票结果序列’sj2.3中存在无意义区ny;

图4是本发明实施例29的代码运行结果的截图。

具体实施例

实施例1,搜索数据的方法如下,其特征在于:

用于计算机数据的搜索处理,依赖数字计算机而实现;

用于向被搜索的母串(bei->str)中获取需搜索的子串(xu->str)的匹配位置,母串(bei->str)长度(bei->size)大于或等于子串(xu->str)的长度(xu->size),母串元素的取值范围固定,母串元素的取值范围在母串加载之前可以预见,子串元素的取值范围固定,子串元素的取值范围在子串加载之前可以预见;

分配比特位序列表[][],第一维度的最大序号为256,第二维度的最大序号为比特位序列用于投票的比特位的数量;比特位序列表所包含的比特位序列单元均具有以下特征“用于储存数据串匹配状况投票,比特位序列用于投票的比特位数小于或等于所应用计算机一次处理数据的比特位数;比特位序列用于储存数据串的元素对整个数据串各个位置与需搜索子串的匹配状况的支持权限或否决权限,比特位序列整体对应一个数据串,比特位序列中各个比特位各自单独对应数据串的一个元素,比特位序列中比特位与数据串元素的对应方式是按序对应,比特位序列中比特位以1代表支持,以零代表否决,比特位序列中比特位与数据串元素的对应方式是同序对应,即比特位序列中第一个比特位对应数据串的第一个元素,比特位序列中第二个比特位对应数据串的第二个元素,比特位序列中第三个比特位对应数据串的第三个元素,依此类推”;

分配比特位序列变量n1、n2;

预处理:

d1、采用前述的一种构建比特位序列表的方法构建比特位序列表biao[][];具体步骤如下:

构建比特位序列表biao[][]的方法,如下:

步骤d1.1、构建比特位序列表模板:c语言伪代码表达为:构建比特位序列表模板();

构建比特位序列表模板的方法如下:

步骤d1.1.1,为比特位序列表模板(wei_zhuanjm[8])分配内存,比特位序列表模板具有比特位序列单元,比特位序列表模板中比特位序列单元的数量等于比特位序列用于投票的比特位的数量;比特位序列表模板具有比特位序列单元的序号从零开始计算;

步骤d1.1..2、对比特位序列表模板(wei_zhuanjm[8])中各个比特位序列单元进行赋值;赋值操作如下:

步骤d1.1..1、先将比特位序列表模板(wei_zhuanjm[8])中各个比特位序列单元的所有用于投票的比特位赋值为1,c语言伪代码表达为:jm[j].cha=0xff;

步骤d1.1..2、将各个比特位序列单元的所有用于投票的比特位进行位移操作,位移操作的位数为各个比特位序列单元在比特位序列表模板(wei_zhuanjm[8])的序号与1的和;c语言伪代码表达为:jm[j].cha<<=(j+1);

步骤d1.2、载入比特位序列表模板(jm)到比特位序列表第一维(biao[0][])中,其方法如下:

步骤d1.2.1、将比特位序列表模板(jm)的数据按序复制到比特位序列表中,c语言伪代码表达为:memcpy(&biao[0][0],jm,sizeof(wei_zhuan)*8);

步骤d1.3、对比特位序列表第一维(biao[0][])中各个比特位序列单元各自的没有否决权的比特位赋值为1,具体如下:

步骤d1.3.1、分配一个变量,称之为第九变量(n9),第九变量(n9)的比特位数量等于比特位序列的比特位数量;

步骤d1.3.2、将第九变量(n9)的每个比特位均赋值为1,c语言伪代码表达为:n9.cha=0xff;;

步骤d1.3.3、对第九变量进行右移位移操作,右移位数为比特位序列单元的最大序号减去当前处理的比特位序列单元的序号,再加上需搜索字符串中字符的最大序号(size),字符串中字符的第一个序号为零,即字符串中字符的下标从零开始,c语言伪代码表达为:n9.cha>>=(7-j+size);;

步骤d1.3.4、将当前比特位序列单元的值与第九变量(n9)进行位或操作,并将位或操作的结果赋予给当前比特位序列单元,c语言伪代码表达为:biao[ca][j].cha|=n1.cha;;

步骤d1.4、将比特位序列表第一维(biao[0][])中各个比特位序列单元以同样的顺序,复制到比特位序列表的其他维度中,c语言伪代码表达为:(size_ti=1;i<256;i++)memcpy(&biao[i][0],&biao[0][0],sizeof(wei_zhuan)*8);

步骤d1.5、对比特位序列表中各个比特位序列单元进行投票信息赋值,具体方法如下:

步骤d1.5.1、构建第一计次循环,第一计次循环中具有第一计次变量

(j),第一计次变量的初始值为比特位序列用于投票的比特位数,第一计次循环每循环一次则第一计次变量(j)减少1,当第一计次变量(j)小于零时循环停止,c语言伪代码表述为:for(intj=8;j>=0;j--){};第一计次循环的每次循环都包含如下操作过程:

步骤d1.5.1.1、分配kr变量(kr);

步骤d1.5.1.2、将第一计次变量(j)的值赋予给kr变量;

步骤d1.5.1.3、如果第一计次变量(j)大于需搜索字符串中字符的最大序号(size)则将需搜索字符串中字符的最大序号(size)赋予给kr变量;

步骤d1.5.1.4、构建第二计次循环,第二计次循环中具有第二计次变量(k),第二计次变量(k)的初始值为kr变量的值,第一计次循环每循环一次则第二计次变量(k)减少1,当第二计次变量(k)小于零时循环停止,c语言伪代码表述为:or(intk=kr;k>=0;k--){};第二计次变量(k)的每次循环都包含如下操作过程:

步骤d1.5.1.4.1、分配一个变量,称之为第十变量(n10),第十变量(n10)的比特位数量等于比特位序列的比特位数量;

步骤d1.5.1.4.2、将第十变量(n10)赋值为1,c语言伪代码表达为:n10.cha=0x1;;

步骤d1.5.1.4.3、对第十变量(n10)进行左移位移操作,左移操作的位数的数量为第一计次变量(j)减去第二计次变量(k)所得的值,将左移位移操作所得的值赋予给第十变量(n10),c语言伪代码表达为n10.cha<<=(j-k);;

步骤d1.5.1.4.4、分配ca变量;

步骤d1.5.1.4.5、获取需搜索字符串(xu->str)中序号为第二计次变量(k)的字符(xu->str[k]),并将获得的字符(xu->str[k])赋予给ca变量,c语言伪代码表述为:unsignedcharca=xu->str[k];;

步骤d1.5.1.4.6、对比特位序列表的第一维度序号等于ca变量的值第二维度序号等于第一计次变量(j)的值的单元(biao[ca][j])进行赋值操作,赋值操作的方式是:先将该单元的值和第十变量(n10)进行位或操作,然后将位或操作所得的值赋予给该单元,c语言伪代码表达为:biao[ca][j].cha|=n10.cha;;

步骤d1.6,结束。

搜索操作流程如下:

d2.1、分配无符号整数型变量sp、hr;c语言伪代码表述为:unsignedintsp=0;

d2.2、分配字符指针sty;c语言伪代码表述为:unsignedinthr;

d2.3、分配比特位序指针kp;c语言伪代码表述为:wei_zhuan*kp;

d2.4、对d1步骤所构造的直观结果实例(jieguo)的有效长度数值(sn.shu)赋值为零;c语言伪代码表述为:jieguo.shu=0;

d2.5、分配无符号整数型变量b_size;并将母串长度(bei->size)值赋予给b_size;c语言伪代码表达为:unsignedintb_size=bei->size;

d2.6、判断需搜索的子串(xu->str)的长度(xu->size)是否大于比特位序列用于投票的比特位的数量,如果大于比特位序列用于投票的比特位的数量则退出流程,向操作者返回为空的信息;如果不大于比特位序列用于投票的比特位的数量则进入下一步;c语言伪代码表达为:if(xu->size>8)return(null);

d2.7、对母串(bei->str)的长度(bei->size)和子串(xu->str)的长度(xu->size)进行比较,如果母串(bei->str)的长度(bei->size)小于子串(xu->str)的长度(xu->size)则则退出流程,向操作者返回为空的信息;否则进入下一步;c语言伪代码表达为:if(bei->size<xu->size)return(null);

d2.8、分配无符号整数型变量ks;并将变量b_size减去比特位序列用于投票的比特位的数量所得的值赋予给变量ks;c语言伪代码表达为:unsignedintks=b_size-8;

d2.9、分配无符号整数型变量bc,并将变量bc赋值为零;c语言伪代码表达为:unsignedcharbc=0;

d2.10、分配有符号整数型变量i,并将变量i赋值为零;c语言伪代码表达为:inti=0;

d2.11、分配有符号整数型变量ket,并将比特位序列用于投票的比特位的数量加一后减去子串(xu->str)的长度(xu->size),c语言伪代码表达为:intket=8+1-xu->size;

d2.12、对比特位序列变量n1的所有用于投票的比特位均赋值为1;c语言伪代码表达为n1.cha=0xff;

d2.13、构造第三循环,用于循环的条件变量为i,i的计次初始值为0,当i大于ks时不再继续执行循环;;c语言代码表达为for(i=0;i<=ks;){};

第三计次循环的循环体内具有如下流程:

d2.13.0、判断bc是否大于零,如果不大于零则进入步骤d2.13.6,如果大于零则进入d2.13.1;c语言伪代码表达为:if(bc>0){};

d2.13.1、将变量n1位移右移操作,右移操作的位数的值为bc的值,并将位移操作后所得的值赋予给n1;c语言伪代码表达为:n1.cha>>=bc;

d2.13.2、将变量n2的所有用于比特位序列的每一个比特位都赋值为1;c语言伪代码表达为:n2.cha=0xff;

d2.13.3、将比特位序列用于投票的比特位的数量减去bc所得的结果赋予给bc;c语言伪代码表达为:bc=8-bc;

d2.13.4、将n2进行左移位移操作,左移操作位数的数量为bc,并将左移位移操作所得的值赋予给n2;c语言伪代码表达为:n2.cha<<=bc;

d2.13.5、将n1和n2进行位或操作,并将位或操作的结果赋予给n1;c语言伪代码表达为:n1.cha=n1.cha|n2.cha;

d2.13.6、将sty指向母串(bei->str)的序号与变量i的值相等的字符;c语言伪代码表达为:sty=(bei->str)+i;;

d2.13.7、构建第四计次循环,用于循环的条件变量为j,j的计次初始值为bc,每循环一次j的值增加1,当j大于等于比特位序列用于投票的比特位的数量时不再继续执行循环;c语言代码表达为:for(intj=bc;j<8;j++){};

第四计次循环的循环体内具有如下流程:

d2.13.7.1、分配变量ca,并将母串中以sty为开端的数据串中序号等于j的数值的单元的值赋予给ca;c语言代码表达为:unsignedcharca=(unsignedchar)sty[j];

d2.13.7.2、获取比特位序列表中第一维度序号为ca第二维度序号为j的比特位序列单元的值,并将该值赋予给n2;c语言代码表达为:n2.cha=biao[ca][j].cha;;

d2.13.7.3、将n1和n2进行位与操作,并将位于位与操作所得的值赋予给n1;c语言代码表达为:n1.cha&=n2.cha;

d2.13.8、判断n1的值是否不为零;如果不为零则进入步骤d2.13.9;否则进入步骤d2.13.10;

d2.13.9、本步骤包含以下子步骤:

d2.13.9.1、将n2的各个比特位赋值为1;c语言代码表达为:n2.cha=0xff;

d2.13.9.2、对n2进行右移位移操作,右移位移操作的位数为子串(xu->str)的长度(xu->size)减1;将位移操作所得的值赋予给n2;c语言代码表达为:n2.cha>>=xu->size-1;

d2.13.9.3、将n2与n1进行位与操作,将操作所得值赋予给n2;c语言代码表达为:n2.cha&=n1.cha;

d2.13.9.4、判断n2是否不为零,如果n2不为零则进入d2.13.9.5,如果n2为零则进入d2.13.9.6;

d2.13.9.5、变量n2中为1的比特位指示了匹配位置,对n2进行解析;解析规则是:如果n2中第n个比特位为1,则母串(bei->str)中i+n的位置为子串匹配位置;

d2.13.9.6、将n2的各个比特位赋值为1;c语言代码表达为:n2.cha=0xff;

d2.13.9.7、对n2进行左移位移操作,左移位移操作的位数为ket的值;将位移操作所得的值赋予给n2;c语言代码表达为:n2.cha<<=(ket);

d2.13.9.8、将n2与n1进行位与操作,将操作所得值赋予给n2;c语言代码表达为:n2.cha&=n1.cha;

d2.13.9.9、判断n2是否不为零,如果n2不为零则进入d2.13.9.10,如果n2为零则进入d2.13.9.11;

d2.13.9.10、变量n2中为1的比特位指示了滑动步长,对n2进行解析;解析规则是:按顺序判断,遇到第一个为1的比特位是最小滑动步长,如果第一个为1的序号为nx,则将i的值增加nx,并将nx赋予给bc,跳到第三循环的尾部,c语言伪代码表达为:continue;;

d2.13.9.11、将i的值自增比特位序列用于投票的比特位的数量;c语言伪代码表达为:i+=8;

d2.13.9.12、将bc赋值为零;c语言伪代码表达为:bc=0;

d2.13.9.13、将n1的各个比特位赋值为1;c语言代码表达为:n1.cha=0xff;

d2.13.9.14、跳到第三循环的尾部,c语言伪代码表达为:continue;;

d2.13.10、本步骤包含以下子步骤:

d2.13.10.1、将i的值自增比特位序列用于投票的比特位的数量;c语言伪代码表达为:i+=8;

d2.13.10.2、将bc赋值为零;c语言伪代码表达为:bc=0;

d2.13.10.3、将n1的各个比特位赋值为1;c语言代码表达为:n1.cha=0xff;

d2.13.10.4、跳到第三循环的尾部,c语言伪代码表达为:continue;;

d2.14、判断i是否位于母串长度(bei->size)减去比特位序列用于投票的比特位的数量所得值与母串长度(bei->size)减去子串长度(xu->size)所得值的区间内;如果在区间内则进入d2.15,如果不在区间内则进入d2.16;c语言伪代码表达为:if(i<=bei->size-xu->size&&i>=bei->size-8){};

d2.15、本步骤包含以下子步骤:

d2.15.1、分配无符号整数型变量hr;并将母串长度减去i所得值赋予给hr;c语言代码表达为:unsignedinthr=bei->size-i;

d2.15.2、判断bc是否等于零,如果等于零,则进入d2.15.3,如果不等于零,则进入d2.15.4;

d2.15.3、将n1的所有比特位赋值为1;c语言伪代码表达为:n1.cha=0xff;

d2.15.4、判断bc是否大于零,如果bc大于零则进入d2.15.5,否则进入d2.15.6;

d2.15.5、本步骤包含以下子步骤:

d2.15.5.0、判断bc是否大于零,如果不大于零则进入步骤d2.15.5.6,如果大于零则进入d2.15.5.1;c语言伪代码表达为:if(bc>0){};

d2.15.5.1、将变量n1位移右移操作,右移操作的位数的值为bc的值,并将位移操作后所得的值赋予给n1;c语言伪代码表达为:n1.cha>>=bc;

d2.15.5.2、将变量n2的所有用于比特位序列的每一个比特位都赋值为1;c语言伪代码表达为:n2.cha=0xff;

d2.15.5.3、将比特位序列用于投票的比特位的数量减去bc所得的结果赋予给bc;c语言伪代码表达为:bc=8-bc;

d2.15.5.4、将n2进行左移位移操作,左移操作位数的数量为bc,并将左移位移操作所得的值赋予给n2;c语言伪代码表达为:n2.cha<<=bc;

d2.15.5.5、将n1和n2进行位或操作,并将位或操作的结果赋予给n1;c语言伪代码表达为:n1.cha=n1.cha|n2.cha;

d2.15.6、将sty指向母串(bei->str)的序号与变量i的值相等的字符;c语言伪代码表达为:sty=(bei->str)+i;;

d2.15.7、构建第五计次循环,用于循环的条件变量为jr,jr的计次初始值为bc,每循环一次jr的值增加1,当jr的大于等于hr的值时不再继续执行循环;c语言代码表达为:for(intjr=bc;jr<hr;jr++){};

第五计次循环的循环体内具有如下流程:

d2.13.7.1、分配变量ca,并将母串中以sty为开端的数据串中序号等于jr的数值的单元的值赋予给ca;c语言代码表达为:unsignedcharca=(unsignedchar)sty[jr];

d2.13.7.2、获取比特位序列表中第一维度序号为ca第二维度序号为jr的比特位序列单元的值,并将该值赋予给n2;c语言代码表达为:n2.cha=biao[ca][jr].cha;;

d2.13.7.3、将n1和n2进行位与操作,并将位于位与操作所得的值赋予给n1;c语言代码表达为:n1.cha&=n2.cha;

d2.15.8、判断n1的值是否不为零;如果不为零则进入步骤d2.15.9;否则进入步骤d2.15.10;

d2.15.9、本步骤包含以下子步骤:

d2.15.9.1、将n2的各个比特位赋值为1;c语言代码表达为:n2.cha=0xff;

d2.15.9.2、对n2进行右移位移操作,右移位移操作的位数为子串(xu->str)的长度(xu->size)减1再减去hr的值再加上子串长度(xu->size);将位移操作所得的值赋予给n2;c语言代码表达为:n2.cha>>=(8-1-hr+xu->size);

d2.15.9.3、将n2与n1进行位与操作,将操作所得值赋予给n2;c语言代码表达为:n2.cha&=n1.cha;

d2.15.9.4、判断n2是否不为零,如果n2不为零则进入d2.15.9.5,如果n2为零则进入d2.15.10;

d2.15.9.5、变量n2中为1的比特位指示了匹配位置,对n2进行解析;解析规则是:如果n2中第n个比特位为1,则母串(bei->str)中i+n的位置为子串匹配位置;

d2.15.10、进入d2.16;

d2.16、结束。

本实施例的代码如下;以下代码已经清晰向本领域技术人员清晰的表达了本发明的数据搜索方法,且详细的进行了备注,即使是技术水平很差的新手,也可以以复制粘贴以下代码的方式实现本实施例,所以本发明的公开是清晰的。

以上示例展示了本发明的实现方式,以上代码所体现的内容不是对本发明的专利权保护范围的限定,以上代码已经编译通过,且能够正常运行,但申请人无法保证在资料的保存和传输过程中出现改变,如果阅读者编译通不过,阅读者应该结合本领域常识对代码进行修复,如果修复仍旧难以运行,可以联系申请人获得以上代码。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1