
字符串
文章平均质量分 60
fpk2014
没有什么可以说的
展开
-
C语言 键索引计数法
键索引计数法简介实现过程代码实现键索引计数法简介 键索引计数法是低位优先(LSD),高位优先(MSD)的字符串排序算法的基础实现过程键索引计数法一般为五个步骤: 1. 频率统计 2. 将频率转换为索引 3. 数据分类 4. 回写比如我们需要将一个班级的学生按照分组来排序。 1. 频率统计, 统计不同分组有多少个学生 ...原创 2018-06-15 10:42:19 · 556 阅读 · 0 评论 -
C语言 低位优先的字符串排序
低位优先的字符串排序用于等长字符串中,比如电话号码,IP地址等。如果字符串的长度为W,那就从右向左以每个位置的字符串作为键,用键索引计数法将字符串排序W遍。代码实现#include <stdio.h>#include <malloc.h>#include <memory.h>#include <assert.h&原创 2018-06-15 11:06:24 · 582 阅读 · 0 评论 -
C语言 高位优先的字符串排序
高位优先的字符串排序与低位优先的相比,高位优先可用于不等长的字符串如果字符串的长度为W,那就从左向右以每个位置的字符串作为键,用键索引计数法将字符串排序W遍。实现要点在于处理不等长的字符串。通常,我们可以将字符串看成是等长的,将‘\0’作为字符串的一部分加入排序。所以我们的排序是以0为第一组进行频率统计的。 将一个字符串数组排序时,首先根据他们的首字母用键索引计数法进行排序,然后...原创 2018-06-15 11:14:26 · 920 阅读 · 0 评论 -
C语言 三向字符串快速排序
三向字符串快速排序 在将字符串数组排序时,根据首字母进行三向切分,然后(递归地)将得到的三个子数组排序:一个含有所有首字母小于切分字符的字符串子数组,一个含有所有首字母等于切分字符的字符串的子数组(排序时忽略它们的首字母),一个含有所有首字母大于切分字符的字符串的子数组。代码实现#include <stdio.h>#include &am原创 2018-06-16 08:53:25 · 755 阅读 · 0 评论 -
C语言 单词查找树 Trie树
单词查找树简介代码实现单词查找树简介 Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。单词查找树的模拟过程可以看链接:Prefix tree...原创 2018-06-17 17:48:33 · 3592 阅读 · 2 评论 -
C语言 确定有限状态自动机 DFA
确定有限状态自动机简介实现过程实现分析代码实现确定有限状态自动机简介 有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。DFA是理解KMP算法的基础。 关于什么是DFA,可参考链接:有穷自动机DFA&NFA本篇的主要目的是实现DFA。实现过程下面是一个字符串ABABAC的DF...原创 2018-06-18 02:00:14 · 4626 阅读 · 0 评论 -
C语言 KMP算法
KMP算法简介 KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。时间复杂度O(m+n)。KMP算法通过确定有限状态自动机DFA实现。实现过程字符串ABABAC的DFA: 通过DFA搜索字符串BCBAABACAABABACAA: 代码实现#include <stdio.h>#include <m...原创 2018-06-18 02:26:22 · 812 阅读 · 1 评论