C语言实现实战小项目:模糊搜索(含源码)
image
前言:本文所提到的模糊搜索是指输入不完整的关键词就可查询到对应的一律精确结果。
例如:输入“天”就可将所有姓名中带有“天”字的人搜索出来;输入“0809”就可将所有ID中带有“0809”片段的人搜索出来。
下面是小编整理好的一套C/C++资料,加小编C/C++编程学习群:825414254,获取系统性学习C/C++的学习资料
QQ截图20190309205647.jpg
image
这种搜索技术被广泛应用于各大有查询功能的软件,为客户提供了极大的方便。在众多的QQ/微信好友中,输入想要查找的联络人的姓名的一部分就可查找到该联络人,是不是很方便呢?
在excel中,即便只记住了查询对象的几个字,也能够通过这种查找方式查询到对应的对象,是不是弥补了你的健忘症呢?
image
实现模糊搜索算法的思路:输入的关键词即为一个字符数组(字符串),本文将以”abcdef”这个字符串为例。要想完成对片段的查询,不能仅仅从前往后比对,也不能仅仅从后往前比对,而是要将所有的片段都进行一遍比对。
这就要求要将字符串的所有连续子片段都找出来存放到一个新的线性结构中,通过对新线性结构的遍历并使用字符串比较函数strcmp进行模糊搜索。
image
那么”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。
image
以下函数用作判断能否符合挑选条件,其中key为关键词。
image
image
若返回值f=1则表示符合挑选条件,即查询对象含有包含关键词的片段。
最为关键的循环就是按照子字符串的长度从1到N1(查询对象字符串的长度)。
image
以下片段为遍历代码,可看可不看,核心算法都在上面。
注:博主实现模糊搜索的环境是linux系统下的gtk开发。
image
提醒:图片可以左右拖动。
最后给大家看一下试验结果:
image
image
项目比较简单,很适合小白同学哦!
而后今天就讲到这里啦,大家记得点赞收藏,分享转发,关注小姐姐哦!
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » C语言实现实战小项目:模糊搜索(含源码)