fpk2014
码龄10年
关注
提问 私信
  • 博客:72,343
    72,343
    总访问量
  • 33
    原创
  • 343,274
    排名
  • 14
    粉丝
  • 0
    铁粉

个人简介:没有什么可以说的

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2015-04-08
博客简介:

fpk2014的博客

博客描述:
如果发现bug,请留下您宝贵的意见。
查看详细资料
个人成就
  • 获得39次点赞
  • 内容获得12次评论
  • 获得198次收藏
  • 代码片获得210次分享
创作历程
  • 30篇
    2018年
  • 3篇
    2017年
成就勋章
TA的专栏
  • c
    31篇
  • 位运算
    1篇
  • 汇编语言
    2篇
  • 算法
    29篇
  • 排序
    7篇
  • 搜索
    5篇
  • 图
    8篇
  • 字符串
    7篇
  • 数据结构
    1篇
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

C语言 KMP算法

KMP算法简介 KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。时间复杂度O(m+n)。KMP算法通过确定有限状态自动机DFA实现。实现过程字符串ABABAC的DFA: 通过DFA搜索字符串BCBAABACAABABACAA: 代码实现#include <stdio.h>#include <m...
原创
发布博客 2018.06.18 ·
784 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

C语言 确定有限状态自动机 DFA

确定有限状态自动机简介实现过程实现分析代码实现确定有限状态自动机简介 有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。DFA是理解KMP算法的基础。 关于什么是DFA,可参考链接:有穷自动机DFA&NFA本篇的主要目的是实现DFA。实现过程下面是一个字符串ABABAC的DF...
原创
发布博客 2018.06.18 ·
4534 阅读 ·
0 点赞 ·
0 评论 ·
12 收藏

C语言 数据结构

排序排序插入排序 希尔排序 冒泡排序 快速排序 归并排序
原创
发布博客 2018.06.17 ·
590 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

C语言 单词查找树 Trie树

单词查找树简介代码实现单词查找树简介 Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。单词查找树的模拟过程可以看链接:Prefix tree...
原创
发布博客 2018.06.17 ·
3555 阅读 ·
6 点赞 ·
2 评论 ·
29 收藏

C语言 三向字符串快速排序

三向字符串快速排序 在将字符串数组排序时,根据首字母进行三向切分,然后(递归地)将得到的三个子数组排序:一个含有所有首字母小于切分字符的字符串子数组,一个含有所有首字母等于切分字符的字符串的子数组(排序时忽略它们的首字母),一个含有所有首字母大于切分字符的字符串的子数组。代码实现#include <stdio.h>#include &am
原创
发布博客 2018.06.16 ·
724 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C语言 高位优先的字符串排序

高位优先的字符串排序与低位优先的相比,高位优先可用于不等长的字符串如果字符串的长度为W,那就从左向右以每个位置的字符串作为键,用键索引计数法将字符串排序W遍。实现要点在于处理不等长的字符串。通常,我们可以将字符串看成是等长的,将‘\0’作为字符串的一部分加入排序。所以我们的排序是以0为第一组进行频率统计的。 将一个字符串数组排序时,首先根据他们的首字母用键索引计数法进行排序,然后...
原创
发布博客 2018.06.15 ·
889 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

C语言 低位优先的字符串排序

低位优先的字符串排序用于等长字符串中,比如电话号码,IP地址等。如果字符串的长度为W,那就从右向左以每个位置的字符串作为键,用键索引计数法将字符串排序W遍。代码实现#include <stdio.h>#include <malloc.h>#include <memory.h>#include <assert.h&amp
原创
发布博客 2018.06.15 ·
558 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言 键索引计数法

键索引计数法简介实现过程代码实现键索引计数法简介 键索引计数法是低位优先(LSD),高位优先(MSD)的字符串排序算法的基础实现过程键索引计数法一般为五个步骤: 1. 频率统计 2. 将频率转换为索引 3. 数据分类 4. 回写比如我们需要将一个班级的学生按照分组来排序。 1. 频率统计, 统计不同分组有多少个学生 ...
原创
发布博客 2018.06.15 ·
539 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

C语言 哈希表

哈希表简介哈希函数哈希冲突拉链法代码实现线性探测法代码实现哈希表简介 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。哈希函数得到一个数的hash值的函数,被称为哈希函数。 1. 整数 除留余数法, 对于大小为素数M的数组,对于任意正整数k,计算k除...
原创
发布博客 2018.06.14 ·
831 阅读 ·
0 点赞 ·
0 评论 ·
10 收藏

C语言 拓补排序 有向无环图

拓补排序简介实现过程代码实现拓补排序简介 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前首先需要知道一个概念:入度。 通常指有向图中某点作为图中边的终点的次数之和。比如: ...
原创
发布博客 2018.06.13 ·
920 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

C语言 最短路径之Dijkstra算法 无向图

Dijkstra算法简介实现过程代码实现Dijkstra算法简介 Dijkstra算法是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。 实现过程Dijkstra算法和Prim算法非常相似(参照链接:C语言 Prim算法和Kruskal算法的实现和证明)从上面可以看出,Dijkstra算法只是比...
原创
发布博客 2018.06.12 ·
10686 阅读 ·
5 点赞 ·
1 评论 ·
44 收藏

C语言 union-find算法 图的连通性

连通分量代码实现ADTquick-find算法quick-union算法quick-find和quick-sort的完整代码连通分量任何连通图的连通分量只有一个,即是其自身,非连通的无向图有多个连通分量。 比如: 图(a)的连通分量只有一个,而图(b)的连通分量有6个。现在有数据如下,怎么判断有多少个连通分量? int e[10][...
原创
发布博客 2018.06.08 ·
1169 阅读 ·
2 点赞 ·
3 评论 ·
2 收藏

C语言 优先队列

优先队列优先队列相比队列多了一个功能,就是自动排序代码实现#include <stdio.h>#include <malloc.h>#include <memory.h>#define QUETYPE chartypedef struct node { QUETYPE data; st
原创
发布博客 2018.06.07 ·
2589 阅读 ·
1 点赞 ·
0 评论 ·
9 收藏

C语言 Prim算法和Kruskal算法的实现和证明

最小生成树简介原理Prim算法算法实现算法证明Kruskal算法算法实现算法证明最小生成树简介最小生成树(MST):给定一加权无向图,找出它的一颗最小生成树。 定义:图的最小生成树是它的一副含有其所有顶点的无环连通子图。一副加权图的最小生成树是它的一颗权值(树种所有边的权值之和)最小的生成树。我们约定: 1. 只考虑连通...
原创
发布博客 2018.06.06 ·
3943 阅读 ·
6 点赞 ·
2 评论 ·
19 收藏

C语言 图的广度优化搜索

图的广度优化搜索简介实现过程代码实现图的广度优化搜索简介 所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。一般的实现里,其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(open-closed表)与深度优化搜索相比,深度优化搜索并不...
原创
发布博客 2018.06.05 ·
307 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言 队列

队列简介代码实现队列简介 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。即: * 插入:只能插入在链表最后 * 出队:只能从队头出代码实现ADT:#include &l...
原创
发布博客 2018.06.05 ·
489 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

C语言 图的深度优化搜索

深度优先遍历简介实现过程代码实现深度优先遍历简介 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v; (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问; (3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。 ...
原创
发布博客 2018.06.04 ·
921 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言 图的领接矩阵与邻接表

领接矩阵使用一个V*V的布尔矩阵。当结点a与结点b有连接时,定义a行b列的元素值为true,否则为false。 所以我们需要一个V^2大小的数组。需要的内存空间要求很大。 注:以下图片取自:数据结构(七)图代码实现#include <stdio.h>#include <malloc.h>#include <memory.
原创
发布博客 2018.06.03 ·
2522 阅读 ·
3 点赞 ·
0 评论 ·
24 收藏

C语言 栈

栈简介代码实现栈简介 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。对...
原创
发布博客 2018.06.02 ·
228 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言 2-3树

2-3树简介实现过程代码实现2-3树简介 2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树的模拟过程可以看链接:InsertSortion实现过程在2-3树中,一个结点只有一个值的我们称为2-结点,有两个值的称为3-结点,在2-3树中,一个结点最多只有两个值,即3-结点。 ...
原创
发布博客 2018.06.01 ·
2889 阅读 ·
2 点赞 ·
2 评论 ·
9 收藏
加载更多