查找
老黑675
这个作者很懒,什么都没留下…
展开
-
查找——字典树TrieTree
字典树 多个字符串进行反复查找 单词查找 单词计数 单词排序 核心思想 创建字典树,之后进行查找,一定非空树,节点中无字符,以下边结点代表上面节点的下标,一种单词中字符共用的思想 代码 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct sNode { int nCount; struct sNode ** arrchar; }TireTree; TireTree * addN原创 2022-01-10 18:28:18 · 131 阅读 · 0 评论 -
查找——Sunday
Sunday 相当于strstr函数,功能强于KMP 核心思想 谁跟头比标记谁,在主串上只能出现在以一个不同的位置之后的匹配串的长度上,通过从右向左的对齐的方式 移动子串 找到等长的下一个在子串中出现的位置,使用哈希查找,使用255字符哈希 先对匹配串处理 next 数组 下一次佩的位置 k + len - next[主[k + len]] 代码 #include<stdio.h> #include<stdlib.h> #include<string.h> int原创 2022-01-10 18:27:45 · 73 阅读 · 0 评论 -
查找——哈希查找HashSearch
哈希查找 对无序数据,进行重复查找 基本思想 散列查找 散列即分组,按照某一特征进行查找,按照某种特征处理好——建立哈希表 创建哈希比表 确顶哈希散列函数(创建之前确定)——求整取余法 p = key%M (M <= n ) 有M组 定解决哈希冲突的办 a. 开放地址法(线性探测(+1)、线性补偿探测(定间隔)->线性探测在散列(间隔改变 + - i * i) 、随机探测)——去其他位置探测存储 b. 拉链法——发生冲突就生成链表 基于哈希表进行查找——利用指针数组 实现 定义结构体 申原创 2022-01-10 18:26:58 · 290 阅读 · 0 评论 -
查找——KMP
KMP 使用场景 字符串查找,在一个字符串中查找另一个字符串,首次出现的首地址。 核心思想 主串不回头,匹配串移动,不回头利用额外的空间,在子串的跟主串不同地方找前面重复的部分(即字符串的前坠,和后缀):以字符串开头为开头,以后缀为结尾结尾的子串,找后缀与前缀最长的相同子串 重点:Next数组 装开始到匹配串任意一个字符之前 子串前缀后缀最大匹配长度,以空间换时间 根据匹配串生成next数组——数组默认从零开始,记录长度,前一个为零时从头开始比较,和前面那个数的下一个进行比较,和前面不相同的地方同等对待原创 2020-09-20 10:03:38 · 43 阅读 · 0 评论 -
查找——二分查找BinaryChop
二分查找 应用场景 对有序数组进行查找 核心思想 每一次都将查找区间缩减为原来的一半 代码 #include<stdio.h> /*二分查找*/ int BinaryChop(int arr[],int nlength,int nValue) { int left = 0; int rigth = nlength - 1; int mid; while(left <= rigth) { mid = left + (rigth - left)/2; if(arr[mid]原创 2020-09-09 16:23:00 · 69 阅读 · 0 评论