亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

使用C語言實現模糊搜索功能

2020-05-23 13:30:24
字體:
來源:轉載
供稿:網友

例如:輸入“天”即可將所有姓名中帶有“天”字的人搜索出來;輸入“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開發。

//按學號查找界面的<查找>void on_button_idsearch_clicked(GtkObject* widget,gpointer user_data){ int i; int f=0; GtkTreeIter iter; //獲取搜索關鍵字 const gchar* keywords = gtk_entry_get_text(entry_search_id); gtk_list_store_clear(liststore2); for(i=0;i<size1;i++)  if(result_mohu(keywords,stu1[i].id)==1)   {        gtk_list_store_append(liststore2,&iter);    gtk_list_store_set(liststore2,&iter,0,stu1[i].no,-1);    gtk_list_store_set(liststore2,&iter,1,stu1[i].id,-1);    gtk_list_store_set(liststore2,&iter,2,stu1[i].name,-1);    gtk_list_store_set(liststore2,&iter,3,stu1[i].math,-1);    gtk_list_store_set(liststore2,&iter,4,stu1[i].c_language,-1);    gtk_list_store_set(liststore2,&iter,5,stu1[i].daolun,-1);    gtk_list_store_set(liststore2,&iter,6,stu1[i].english,-1);    gtk_list_store_set(liststore2,&iter,7,stu1[i].pe,-1);    gtk_list_store_set(liststore2,&iter,8,stu1[i].history,-1);    gtk_list_store_set(liststore2,&iter,9,stu1[i].daoyuan,-1);    gtk_list_store_set(liststore2,&iter,10,stu1[i].banzhuren,-1);    gtk_list_store_set(liststore2,&iter,11,stu1[i].score_classmate,-1);    gtk_list_store_set(liststore2,&iter,12,stu1[i].sum,-1);    f=1;   } if(f==0)  gtk_widget_show(GTK_WIDGET(window_noresult));}

最后給大家看一下實驗結果:

C語言,模糊搜索

C語言,模糊搜索

總結

以上所述是小編給大家介紹的使用C語言實現模糊搜索功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成色777777在线观看影院| 亚洲色图17p| 人人爽久久涩噜噜噜网站| 成人做爰www免费看视频网站| 久久久精品免费视频| 91久久精品国产91性色| 日韩电影中文字幕在线| 日韩欧美在线观看| 色一情一乱一区二区| 欧美国产一区二区三区| 亚洲欧美日韩精品| 亚洲国产欧美在线成人app| 久久理论片午夜琪琪电影网| 欧美中文在线观看国产| 午夜精品福利在线观看| 国产精品久久不能| 日韩精品视频观看| 4438全国亚洲精品在线观看视频| 日韩资源在线观看| 色悠悠久久久久| 久久亚洲私人国产精品va| 欧美怡红院视频一区二区三区| 亚洲日韩欧美视频一区| 色播久久人人爽人人爽人人片视av| 在线观看不卡av| 高清欧美性猛交xxxx| 日韩经典中文字幕在线观看| 国产成人91久久精品| 亚洲在线第一页| 精品久久中文字幕| 国产精品视频999| 欧美成aaa人片免费看| 国产精品一区二区久久| 亚洲男人第一网站| 久久理论片午夜琪琪电影网| 亚洲小视频在线| 亚洲一区美女视频在线观看免费| 日韩国产欧美精品在线| 一区二区三区日韩在线| 成人免费网站在线看| 久久影院资源站| 日本成人黄色片| 国内精品一区二区三区四区| 亚洲一区二区久久| 久久男人av资源网站| 欧美激情第1页| 夜夜嗨av色一区二区不卡| 欧美午夜女人视频在线| 亚洲欧美国产一本综合首页| 亚洲国产高清福利视频| 欧美专区在线播放| 国产精品视频自拍| 91牛牛免费视频| 91性高湖久久久久久久久_久久99| 亚洲免费影视第一页| 热re99久久精品国产66热| 成人a免费视频| 欧美中文在线观看| 欧美专区国产专区| www欧美日韩| 亚洲天堂影视av| www.亚洲成人| 欧美色欧美亚洲高清在线视频| 综合国产在线视频| 国产精品91久久| 国产精品永久免费在线| 夜夜狂射影院欧美极品| 亚洲xxxxx电影| 国产精品成人一区二区三区吃奶| 亚洲国产毛片完整版| 高清在线视频日韩欧美| 国产精品久久9| 97免费视频在线播放| 欧美高跟鞋交xxxxxhd| 亚洲精品视频免费在线观看| 亚洲国产精品一区二区三区| 日本午夜在线亚洲.国产| 久久人人爽人人爽人人片亚洲| 欧美亚洲免费电影| 国产精品久久久久久婷婷天堂| 麻豆国产精品va在线观看不卡| 91久久精品国产91久久| 欧洲成人在线观看| 91av视频在线播放| 亚洲视频在线观看| 国产精品亚洲精品| 国产精品极品在线| 成人av.网址在线网站| 日本精品久久电影| 91系列在线播放| 国产欧美精品在线播放| 亚洲精品在线视频| 96sao精品视频在线观看| 精品久久久久久久中文字幕| 蜜臀久久99精品久久久无需会员| 久久人人爽人人爽人人片av高清| 国产精品一区久久久| 日韩精品极品毛片系列视频| 亚洲女人被黑人巨大进入| 亚洲日本aⅴ片在线观看香蕉| 成人精品在线观看| 最近2019中文免费高清视频观看www99| 国产成人自拍视频在线观看| 成人在线中文字幕| 国产精品高清网站| 亚洲精品成a人在线观看| 亚洲无限av看| 国产视频精品va久久久久久| 91成人在线播放| 国产精品一区二区三区免费视频| 欧美精品免费播放| 国产精品高潮呻吟久久av无限| 大荫蒂欧美视频另类xxxx| 97在线日本国产| 国产999在线观看| 亚洲电影免费观看高清| 久久视频这里只有精品| 国产ts一区二区| 免费97视频在线精品国自产拍| 国产精品极品美女粉嫩高清在线| 亚洲男子天堂网| 亚洲天堂一区二区三区| 久久久精品国产亚洲| 午夜精品99久久免费| 亚洲高清福利视频| 国产日产亚洲精品| 欧美激情在线观看| 91精品国产色综合久久不卡98口| 一区二区亚洲欧洲国产日韩| 91视频88av| 国产精品久久久久久婷婷天堂| 中文字幕日韩精品在线观看| 美女久久久久久久久久久| 久久不射电影网| 中文字幕欧美日韩va免费视频| 欧美午夜精品久久久久久久| 亚洲欧美日韩精品久久亚洲区| 狠狠操狠狠色综合网| 亚洲伊人久久综合| 亚洲精品一区久久久久久| 日本精品久久久| 久久久久久久影视| 久久久久中文字幕2018| 成人免费在线网址| 欧美色videos| 日韩欧美亚洲综合| 亚洲一区二区三区在线免费观看| 欧美国产精品va在线观看| 欧美亚洲另类制服自拍| 欧美在线欧美在线| 国产精品久久97| 色爱av美腿丝袜综合粉嫩av| 国产一区二区三区在线观看网站| 日本高清视频精品| 91在线视频九色| 亚洲色图校园春色| 亚洲精品免费av| 欧美激情第1页| 国产成人福利视频| 日韩精品中文字幕久久臀| 国产精品免费看久久久香蕉| 久久黄色av网站| 亚洲国产精久久久久久| 日韩中文字幕在线播放|