- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 分治算法——二分搜索的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录问题描述细节须知算法原理算法的思路算法的分析问题描述给定已排好序的n个元素组成的数组,现要利用二分搜索算法判断特定元素x是否在该有序数组中细节须知(1)由于可能需要对分治策略实现二分搜索的算法效率进行评估,故使用大量的随机数对算法进行实验(生成随机数的方法见前篇随笔)。(2)由于二分搜索需要数据为有序的,故在进行搜索前利用函数库中sort函数对输入的数据进行排序。(3)代码主要用到的是经典的二分查找加上递归。(4)
2020-09-15 16:26:38 2375
原创 算法设计——五大算法总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档算法设计总结一、【分治法】二、【动态规划法】三、【贪心算法】四、【回溯法】1、回溯法的一般描述五、【分支限界法】一、【分治法】在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)
2020-09-15 16:10:20 18297 6
原创 tcp/ip协议栈——epoll的内部实现原理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档实现原理前言一、网卡接收数据二、数据的接收进程阻塞为什么不占用cpu资源?工作队列等待队列唤醒进程内核接收网络数据全过程同时监视多个socket的简单方法select的流程select的缺点措施一:功能分离措施二: 就绪列表epoll的原理和流程epoll的实现细节结论前言epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。因为epoll的重要
2020-09-13 08:46:04 613
原创 算法与设计——动态规划算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录什么是动态规划动态规划的分类常见的动态规划1. 裴波那契数列1.1问题分析:1.2 代码实现1.3矩形覆盖问题总结什么是动态规划在面试过程中如果是求一个问题的最优解(通常是最大值或者最小值),并且该问题能够分解成若干个子问题,并且子问题之间还有重叠的更小子问题,就可以考虑用动态规划来解决这个问题。动态规划的分类大多数动态规划的问题都可以被归类成两种类型:优化问题和组合问题优化问题优化问题就是我们常见的求一个问题最
2020-09-12 00:43:33 390
转载 常见算法——十大内部排序算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言前言排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。参考博客:https://blog.csdn.net/foreverling/article/details/43798223...
2020-09-11 07:06:05 903
原创 动态规划——最短路径的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2020-09-10 22:16:12 1160 1
原创 贪心算法——最小生成树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2020-09-10 22:14:41 666 1
原创 分治算法——快速排序的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2020-09-10 22:13:24 489
原创 分治算法——归并排序的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2020-09-10 22:11:45 463
原创 搜索树——c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录搜索树索引二叉搜索树:二叉搜索树的操作:1. 搜索:2. 插入3. 删除二叉搜索树的实现搜索树搜索树适用于字典描述,与跳表和散列相比,二叉搜索树和平衡搜索树使用更加灵活,在最坏的情况下性能有保证。二叉搜索树:是一棵二叉树,可能为空,非空的二叉搜索树满足以下特征:1.每个元素都有唯一的关键字2.根节点的左子树中,元素的关键字都小于根节点的关键字3.根节点的右子树中,元素的关键字都大于根节点的关键字4.根节点左右子树也
2020-09-10 17:58:45 802
原创 平衡搜索树——竞赛树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录竞赛树:C++实现赢者树:二、竞赛树的实现代码:1.引入库竞赛树:tournament tree, 也是以可完全二叉树,所以使用数组描述效率最好,竞赛树的基本操作是替换最大(小)元素赢者树和输者树:为了便于实现,需要将赢者树限制为完全二叉树。n个参与者的赢者树,具有n个外部节点,n-1个内部节点。每个内部节点记录的是在该节点比赛的赢者。最大赢者树和最小赢者树:为了确定输赢者,给每个选手一个分数,分数最大挥着最小的获胜
2020-09-10 17:55:08 427
原创 平衡搜索树——B+树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录B+树简介B+树结构代码实现1.BPulsTree.hBPulsTree.cppDemo.cppB+树简介B+ 树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+ 树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树元素自底向上插入,这与二叉树恰好相反。B+树结构B+树有一个重要的参数叫 阶 (m),决定了一颗B+树每一个节点存储关键子的个数。每一个节点都会按顺序存储一组关键字,
2020-09-10 17:33:38 1940
原创 线性表——栈的c++模板实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1.基本概念2.构造栈3.c++模板实现3.1 节点的数据结构3.2 用模板类构造一个简单的stack类1.基本概念栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out)只能在栈顶进行插入和删除操作压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小2.构造栈
2020-09-10 16:47:50 406
原创 线性表——队列的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录队列c++的代码实现1.数组实现2.链表实现队列队列: 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一一样,队列是一种操作受限的线性表。进行插入操作的端称队尾,进行插入操作的端称为队尾,进行删除操作的端称为队头;队列的特点: 先进先出;队列中有两个值,一个是front记录队头的位置,另一个是rear记录队尾的位置。在实际应用时,由于数组队列的
2020-09-10 09:57:51 398
原创 二叉树——优先队列的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码
2020-09-09 22:01:49 320
原创 线性表——hashtable的c++实现
https://blog.csdn.net/qq_36408262/article/details/96475182
2020-09-09 18:02:16 377
原创 线性表——跳表的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、 跳表的原理二、跳表 c++ 实现二、使用步骤1.引入库2.读入数据总结一、 跳表的原理跳表(skip list) 对标的是平衡树(AVL Tree),是一种 插入/删除/搜索 都是 O(logn)O(logn) 的数据结构。它最大的优势是原理简单、容易实现、方便扩展、效率更高。因此在一些热门的项目里用来替代平衡树,如 redis, leveldb 等。跳表顾名思义就是跳跃的表格,理解起来其实就是跳着插入或者搜索。具体什
2020-09-09 17:57:32 358 1
原创 集合——并查集的C++实现及优化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档并查集的C++实现及优化前言一、什么是并查集(Disjoint-set)三、C++实现一方法一:方法二:五、C++实现二(优化版)总结前言提并查集(Disjoint-set) 的代码非常简洁,但是功能却很强大。关于并查集,这里有一篇文章超有爱的并查集~,讲得非常好,但是只使用了并查集两个主要优化中的"路径压缩"优化,并且我觉得很多情况下采用递归的写法要比采用循环的写法要易懂很多。本文将使用C++实现并查集并使用“按秩合并”和”路径压
2020-09-09 16:46:42 9617 7
原创 平衡搜索树——B-树 C++的模板类实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档B-树 C++的模板类实现1.定义2.建立B-树的节点3.插入数据key4.完整代码1.定义一棵m阶B-树是拥有以下性质的多路查找树:1、非叶子结点的根结点至少拥有两棵子树;2、每一个非根且非叶子的结点含有k-1个关键字以及k个子树,其中⌈m/2⌉≤k≤m;3、每一个叶子结点都具有k-1个关键字,其中⌈m/2⌉≤k≤m;4、key[i]和key[i+1]之间的孩子节点的值介于key[i]、key[i+1]之间5、所有的叶子结
2020-09-09 14:19:39 196
原创 多叉树——Trie树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Trie树 c++实现Trie树介绍2. Trie树性质3. trie树典型应用:(1)字符串检索(2) 词频统计(3) 去除重复单词(4) 字符串排序(5) 最长公共前缀(6) 前缀匹配:4. Trie树设计5. Trie树优点:6. Trie树操作7. 实现8. 其他代码实现9. 参考:Trie树介绍Trie,又称单词查找树、前缀树,是一种多叉树结构。如下图所示:上图是一棵Trie树,表示了关键字集合{“a”, “to”, “t
2020-09-09 10:37:29 1314
原创 二叉树——线段树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、线段树的概念三、线段树的建立四、线段树的插入五、线段树求和调用前言当你遇到有一些类似线性查找的题的时候,刚好数据特别大的时候,那么线段树这个东西就很好用了,但是线段树的概念就是学习线段树的一大难点,要想学好线段树,就要先了解线段树。一、线段树的概念线段树是一棵二叉树,其节点表示的是一个区间 [ x , y ];每一个叶子节点表示了一个单位区间,根节点表示的是“整体”的区间;每个非叶子节点的区间 [ x ,
2020-09-09 09:21:41 275
原创 海量数据处理——Bloom Filter系列改进
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.Counting Bloom Filter2.Spectral Bloom Filter3.Dynamic Count Filter前言 Bloom Filter的出现,使得海量数据搜索的效率提高了非常多,大家针对简单的Bloom Filte存在的各种局限进行分析,从而得到了不同的演化版本,本文针对这些演化版本进行粗略分类与介绍,简要说明各类演化版本的优缺点。1.Counting Bloom Filter简单的B
2020-09-07 16:59:02 598
原创 海量数据处理——Bloom Filter C++代码实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一. 实例二. Bloom Filter的算法(1) 加入字符串过程(2) 检查字符串是否存在的过程(3) 删除字符串过程三. Bloom Filter参数选择(1)哈希函数选择(2)Bit数组大小选择四. Bloom Filter实现代码前言Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一.
2020-09-07 15:34:20 779
原创 海量数据处理——处理方法的总结分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档总结分析前言1. Bloom Filtering3. 堆技术前言海量数据处理中常用到的技术,如下:1. Bloom Filtering基本的Bloom Filtering支持快速的插入和查找操作,是一种hash表技术。基本的数据结构非常简单,容量为m的位数组,k个hash函数,将输入的n个元素存储在位数组里面。每次插入一个新的元素,先计算该元素的k个hash指,将位数组对应hash值位置为1. 查找某个元素时,同样的先计算k个
2020-09-07 14:56:31 205
原创 平衡搜索树——B树原理以及代码实现 C/C++
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、B树的概念二、B树满足以下性质:四、树的构造:(1)查找结点:(2)插入:五、代码实现:六、B树应用:前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、B树的概念B树是平衡的多叉树,一个节点有多于两个(不能小于)结点的平衡多叉树。由于B树倒着生长
2020-09-06 07:28:42 247
原创 平衡搜索树 ——B树,B-树和B+树的区别
B树,B-树和B+树的区别B树B-树的特性:B+树B+树与B-树的区别B+的特性:B*树小结B树二叉搜索树:1、所有的非叶子结点至多拥有两个儿子(Left和Right)2、所有结点存储一个关键字3、非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树,如下图:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;
2020-09-05 12:30:11 451
原创 平衡搜索树 ——红黑树的c++实现
红黑树的c++实现一、红黑树的介绍1、红黑树的特性:二、红黑树的c++实现(代码说明)1. 基本定义2. 左旋3. 右旋4. 添加5. 删除操作三、红黑树的C++实现(完整源码)四、 红黑树的C++测试程序一、红黑树的介绍 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。1、红黑树的特性:(1)每个节点或黑色,或者红色;(2)根节点是黑色;(3)每个叶子节点(NI
2020-09-05 11:22:57 223
原创 二叉查找树 ——c++实现版本
概要本章给出二叉查找树的C++版本。这里不再对树的相关概念进行介绍,若遇到不明白的概念,可以在上一章查找。文章目录二叉查找树简介二叉查找树的C++实现1. 节点和二叉查找树的定义1.1 二叉查找树节点1.2 二叉树操作2 遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历3、查找4、最大值和最小值4.1 查找最大值代码:4.2 查看最小值的代码:5. 前驱和后继6. 插入插入节点的代码7. 删除删除节点的代码9. 销毁销毁二叉查找树的代码二叉查找树的C++实现(完整源码)二叉查找树的C++实现
2020-09-05 10:05:05 130
原创 平衡搜索树 ——红黑树的c语言实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录红黑树的介绍红黑树的c实现(代码说明)1、基本的定义2. 左旋3. 右旋4.添加5. 删除操作红黑树的C实现(完整源码)红黑树的实现文件(rbtree.h)红黑树的实现文件(rbtree.c)红黑树的测试文件(rbtree_test.c)红黑树的C测试程序红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含
2020-09-05 09:31:54 308
原创 平衡搜索树 ——分裂树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档分裂树的c++实现分裂树的简介一、分裂树的C++实现1. 基本定义1.1 节点1.2 分裂树2. 旋转3.插入4.删除二、伸展树的C++实现(完整源码)1.伸展树的实现文件(SplayTree.h)2.伸展树的测试程序(SplayTreeTest.cpp)伸展树的C++测试程序分裂树的简介伸展树(Splay Tree)是特殊的二叉查找树。它的特殊是指,它除了本身是棵二叉查找树之外,它还具备一个特点: 当某个节点被访问时,伸展树会通过
2020-09-05 07:38:07 255
原创 平衡搜索树 ——AVL树的c++实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据3.执行数据前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入
2020-09-04 17:58:14 186
转载 2020-09-01
数据结构与算法系列 目录https://www.cnblogs.com/skywang12345/p/3603935.html
2020-09-01 20:03:36 115
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人