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

首頁 > 編程 > C > 正文

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

2020-01-26 13:39:38
字體:
來源:轉載
供稿:網友

例如:輸入“天”即可將所有姓名中帶有“天”字的人搜索出來;輸入“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語言實現模糊搜索功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕在线观看| 国内成人精品一区| 欧美激情伊人电影| 国产亚洲一区二区精品| 最近中文字幕mv在线一区二区三区四区| 亚洲精品中文字幕av| 久久久中精品2020中文| 久久久视频免费观看| 亚洲精品一区二区三区不| 91国内免费在线视频| 富二代精品短视频| 亚洲视频电影图片偷拍一区| 亚洲精品v天堂中文字幕| 欧美日韩在线第一页| 黄色成人在线播放| 欧美色图在线视频| 91麻豆国产精品| 国产午夜精品全部视频在线播放| 亚洲精品www| 最新91在线视频| 欧美在线视频在线播放完整版免费观看| 日韩欧美一区二区在线| 日韩精品在线免费观看| 久久视频免费在线播放| 日韩在线观看免费av| 精品国产鲁一鲁一区二区张丽| 久久久国产精品亚洲一区| 亚洲第一区第一页| 欧美洲成人男女午夜视频| 日韩免费av片在线观看| 色综合久综合久久综合久鬼88| 国产成人av在线播放| 亚洲mm色国产网站| 亚洲国产精品小视频| 欧美日韩国产限制| 亚洲欧美激情在线视频| 国内精品400部情侣激情| 日韩中文字幕精品| 欧美人与性动交a欧美精品| 国产欧美最新羞羞视频在线观看| 国产欧美在线视频| 久久精品99无色码中文字幕| 国产www精品| 这里只有精品在线观看| 亚洲美女精品成人在线视频| 亚洲一区美女视频在线观看免费| 精品久久久久久久久久久久久| 日韩在线小视频| 久久精品久久久久电影| 日韩欧美在线视频| 亚洲第一色中文字幕| 亚洲精选一区二区| 成人精品久久一区二区三区| 91精品国产高清久久久久久91| 日韩精品中文字幕久久臀| 亚洲天堂免费视频| 国产mv免费观看入口亚洲| 91在线观看免费网站| 亚洲色图美腿丝袜| 大量国产精品视频| 亚洲国产日韩欧美在线动漫| 欧美一区亚洲一区| 青草成人免费视频| 午夜精品www| 国产精品免费在线免费| 日韩中文字幕在线看| 久久久久久999| 亚洲第一偷拍网| 成人福利视频在线观看| 久久的精品视频| 伊人久久五月天| 日韩欧美在线中文字幕| 欧美最猛性xxxxx免费| 亚洲精品第一国产综合精品| 久久亚洲国产精品| 中文字幕精品久久| 美女撒尿一区二区三区| 欧美激情在线一区| 欧美激情2020午夜免费观看| 欧洲一区二区视频| 欧美在线一级视频| 一区二区三区国产在线观看| 欧美性猛交xxxx黑人| 国产精品美女视频网站| 国产精品流白浆视频| 色噜噜狠狠色综合网图区| 午夜精品国产精品大乳美女| 亚洲大胆人体视频| 中文国产亚洲喷潮| 国产小视频91| 青青草原一区二区| 日本伊人精品一区二区三区介绍| 色婷婷综合久久久久中文字幕1| 久久在线视频在线| 日韩精品福利网站| 日韩高清电影免费观看完整| 亚洲电影免费观看高清完整版在线| 亚洲人成毛片在线播放| 成人啪啪免费看| 日本精品中文字幕| 最新亚洲国产精品| 国产精品高清免费在线观看| 亚洲视频国产视频| 亚洲国产精品久久精品怡红院| 国产免费观看久久黄| 日韩av观看网址| 国产色婷婷国产综合在线理论片a| 久久久影视精品| 国产成人精品最新| 欧美大片在线看| 国内精品小视频| 久久亚洲综合国产精品99麻豆精品福利| 夜夜嗨av一区二区三区免费区| 国产精品欧美亚洲777777| 日韩av免费网站| 亚洲第一区在线| 亚洲伊人久久综合| 按摩亚洲人久久| 色久欧美在线视频观看| 欧美视频第一页| 国产精品一区二区三区免费视频| 日韩在线视频播放| 日韩av不卡在线| 久久噜噜噜精品国产亚洲综合| 亚洲最大av网| 日韩电影免费观看中文字幕| 国产精品96久久久久久又黄又硬| 色婷婷综合久久久久中文字幕1| 欧美日韩免费在线观看| 国产精品自产拍高潮在线观看| 久久久久久久久中文字幕| 91精品国产网站| 日韩黄色在线免费观看| 91av在线播放视频| 成人黄在线观看| 亚洲人午夜精品免费| 欧美伊久线香蕉线新在线| 亚洲精品国产拍免费91在线| 亚洲第一综合天堂另类专| 精品国产一区二区三区久久狼黑人| 亚洲综合中文字幕在线观看| 亚洲色图25p| 韩国视频理论视频久久| 97在线视频免费观看| 亚洲欧美制服中文字幕| 亚洲精品www久久久久久广东| 中文字幕欧美国内| 日韩国产欧美精品在线| 91精品视频免费观看| 97久久精品国产| 日本亚洲欧美三级| 亚洲福利在线观看| 久久久久久久久久久免费精品| 久久亚洲一区二区三区四区五区高| 国产精品激情av电影在线观看| 国产午夜精品免费一区二区三区| 日韩中文字幕在线播放| 日韩av电影中文字幕| 欧美成人免费全部观看天天性色| 欧美在线观看一区二区三区| 国产精品自产拍在线观看| 亚洲欧美日韩中文在线制服| 一区二区欧美久久| 欧美裸体xxxx|