没有合适的资源?快使用搜索试试~ 我知道了~
例如:输入“天”即可将所有姓名中带有“天”字的人搜索出来;输入“0809”即可将所有ID中带有“0809”片段的人搜索出来。 这种搜索技术被广泛应用于各大有查询功能的软件,为用户提供了极大的方便。在众多的QQ/微信好友中,输入想要查找的联系人的姓名的一部分即可查找到该联系人,是不是很方便呢?在excel中,即使只记住了查询对象的几个字,也能够通过这种查找方式查询到对应的对象,是不是弥补了你的健忘症呢? 实现模糊搜索算法的思路:输入的关键词即为一个字符数组(字符串),本文将以”abcdef”这个字符串为例。要想完成对片段的查询,不能仅仅从前往后比对,也不能仅仅从后往前比对,而是要将所有的片段都进
资源推荐
资源详情
资源评论
使用使用C语言实现模糊搜索功能语言实现模糊搜索功能
例如:输入“天”即可将所有姓名中带有“天”字的人搜索出来;输入“0809”即可将所有ID中带有“0809”片段的人搜索出来。
这种搜索技术被广泛应用于各大有查询功能的软件,为用户提供了极大的方便。在众多的QQ/微信好友中,输入想要查找的联
系人的姓名的一部分即可查找到该联系人,是不是很方便呢?在excel中,即使只记住了查询对象的几个字,也能够通过这种
查找方式查询到对应的对象,是不是弥补了你的健忘症呢?
实现模糊搜索算法的思路:输入的关键词即为一个字符数组(字符串),本文将以”abcdef”这个字符串为例。要想完成对片段
的查询,不能仅仅从前往后比对,也不能仅仅从后往前比对,而是要将所有的片段都进行一遍比对。这就要求要将字符串的所
有连续子片段都找出来存放到一个新的线性结构中,通过对新线性结构的遍历并使用字符串比较函数strcmp进行模糊搜索。
那么”abcdef”这个字符串到底有多少个连续子片段呢?我们按照子片段的长度挨个找规律,按长度由大到小进行:长度为6的
就只有”abcdef”这1个;长度为5的有2个:”abcde”和”bcdef”;长度为4的有3个:”abcd”、”bcde”和”cdef”;长度为3的有4个;
长度为2的有5个;长度为1的有6个。所以一共有1+2+3+4+5+6=21个。想必看到这里大家已经找到了规律:若关键词的长度
为n,则该关键词的连续子字符串的个数就为1+2+3+…+n。
以下函数用作判断是否符合筛选条件,其中key为关键词。
//模糊搜索判断是否符合筛选条件
int result_mohu(const gchar* key,char* str)
{
typedef struct
{
char son[11];
}Element;
int i,j,k=0,l=0,m=0;
//f=1为符合筛选条件
int f=0;
//N1为str的长度 N2为str连续子串的个数
int N1=0,N2=0;
N1=strlen(str);
/*计算连续子串的个数*/
for(i=1;i<=N1;i++)
N2+=i;
/*计算连续子串的个数*/
//i控制子字符串的长度
//j控制赋值
//k控制新的线性结构b的下标
//l控制子数组的首项在原数组中的位置
//m控制即将用作赋值的str的下标
Element *b=malloc(sizeof(Element)*N2);
for(i=1;i<=N1;i++)
{
l=0;
/*while循环内为给一个子字符串数组赋值*/
while(1)
{
m=l;
for(j=0;j<i;j++)
{
b[k].son[j]=str[m];
m++;
}
l++;
k++;
if(m==N1)
break;
}
}
//挨个比对
for(i=0;i<N2;i++)
if(strcmp(key,b[i].son)==0)
{
f=1;
break;
}
free(b);
return f;
}
若返回值f=1则表示符合筛选条件,即查询对象含有包含关键词的片段。最为关键的循环就是按照子字符串的长度从1到N1(查
询对象字符串的长度)。
以下片段为遍历代码,可看可不看,核心算法都在上面。注:博主实现模糊搜索的环境是linux系统下的gtk开发。
资源评论
weixin_38728276
- 粉丝: 12
- 资源: 934
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- CDH6.3.2版本hive2.1.1修复HIVE-14706后的jar包
- 鸿蒙项目实战-天气项目(当前城市天气、温度、湿度,24h天气,未来七天天气预报,生活指数,城市选择等)
- Linux环境下oracle数据库服务器配置中文最新版本
- Linux操作系统中Oracle11g数据库安装步骤详细图解中文最新版本
- SMA中心接触件插合力量(插入力及分离力)仿真
- 变色龙记事本,有NPP功能,JSONview功能
- MongoDB如何批量删除集合中文最新版本
- seata-server-1.6.0 没有梯子的可以下载这个
- loadrunner参数化连接mysql中文4.2MB最新版本
- C#从SQL数据库中读取和存入图片中文最新版本
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功