
算法与数据结构精析
文章平均质量分 91
C/C++语言描述常见的数据结构和算法题集。包括栈和队列 链表、树(二叉树、BST树、AVL树、红黑树)、 图、堆、散列表等高级数据结构的讲解及源码实例,算法部分包括递推法、递归法、穷举法、贪心算法、 分治法、动态规划法、迭代法、分支界限法、回溯算法等高级算法部分的内容和典型题目
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
ZY-JIMMY
求知若渴,虚心若愚
展开
-
2020校招复盘——秋招不易,致敬每一位追梦者(含网易、京东等19家互联网公司后台/Server端面经)
秋招经历、秋招心得、C++后台/Server端方向校招准备、面经整理、面经题库原创 2019-10-18 16:28:04 · 30943 阅读 · 75 评论 -
C/C++后端-服务端开发技术博文分类汇总
C/C++后端/服务端开发技术博文分类汇总:C语言基础、C++基础、算法与数据结构、Linux操作系统(网络)、数据库原理、设计模式、Git原创 2019-10-24 10:24:17 · 44616 阅读 · 34 评论 -
C++高级数据结构算法 | 动态规划(Dynamic Programming)
动态规划的基本概念、基本思想、动态规划经典题目分析原创 2019-06-24 15:36:18 · 2954 阅读 · 1 评论 -
C++高级数据结构算法 | 并查集(Union Find、Disjoint Sets)
并查集的基本概念、并查集的基本结构、并查集森林及基本操作实现、并查集的两种优化:按秩合并,路径压缩、题目示例原创 2019-07-07 16:45:38 · 1904 阅读 · 0 评论 -
C++高级数据结构算法 | Tire树(字典树、前缀树)
Trie树的基本概念与应用场景、Trie树的结构定义、单词插入操作、单词查找操作、前缀查询、删除算法、销毁操作、LeetCode 208 实现 Trie (前缀树) 题解原创 2019-06-26 02:59:08 · 4111 阅读 · 3 评论 -
关于 Trie树 前缀查询问题的补充(实现非遍历前缀模式匹配)
Tire树的模式匹配问题的设计思路、代码补充与更新部分、实现非遍历前缀模式匹配、内存泄露检查之路、功能测试 - 《哈利波特》文章单词匹配原创 2019-06-30 09:00:58 · 1368 阅读 · 0 评论 -
基于Tire树(字典树)与倒排索引实现文本词频统计工具
C风格文件、C++风格读写操作、英文文章单词的正确分割、基于Trie树实现文件词频统计、基于Trie树实现带倒排索引的文件词频统计原创 2019-06-30 12:52:51 · 5923 阅读 · 2 评论 -
C++高级数据结构算法 | 倒排索引(inverted index)
从搜索引擎谈起、倒排索引的基本概念、倒排索引举例、浅谈正排索引、倒排索引的实现原创 2019-06-30 09:41:26 · 2394 阅读 · 0 评论 -
C++高级数据结构算法 | Skip List(跳跃表)
跳跃表的基本概念与性质、结构分析、抛硬币产生随机值、元素添加操作、查询操作、元素删除操作、表释放、跳跃表的层序遍历原创 2019-06-18 23:12:34 · 1679 阅读 · 2 评论 -
C++高级数据结构算法 | 回溯算法(Back Tracking Method)
回溯法的解空间、基本思想、递归回溯、迭代回溯、子集树与排列树、子集树算法框架、整数选择问题、0-1背包问题、整数求和问题、排列树算法框架、八皇后问题原创 2019-06-16 20:33:17 · 1909 阅读 · 0 评论 -
C++高级数据结构算法 | RBTree(红黑树)
红黑树的概念与重要性质、红黑树的结构定义、红黑树的旋转操作、红黑树的插入、红黑树的删除、应用场景原创 2019-06-12 01:05:01 · 2256 阅读 · 0 评论 -
C++高级数据结构算法 | AVL(自平衡二叉查找树)
AVL树的概念与结构定义、AVL树的四种旋转算法(单旋、双旋)、AVL树的插入和删除算法及实现、AVL树相关算法题目原创 2019-06-04 21:17:10 · 1892 阅读 · 1 评论 -
C++高级数据结构算法 | Binary Search Tree(二叉查找树)
二分查找算法、BST 树及其几条重要性质、BST 树的结构定义、BST树的插入、删除、查询(递归与非递归实现)、BST树的四种遍历(递归与非递归实现)、BST 树相关的典型题目原创 2019-05-29 06:30:34 · 3363 阅读 · 2 评论 -
C++高级数据结构算法 | 二叉树的四种遍历算法详解(递归与非递归实现)
二叉树遍历方法、前序遍历算法、中序遍历算法、后序遍历算法、层序遍历算法原创 2019-05-29 06:28:39 · 2205 阅读 · 2 评论 -
C++高级数据结构算法 | 树与二叉树的基本概念与性质
树的基本概念、二叉树的定义、二叉树的性质原创 2019-05-29 06:26:54 · 2136 阅读 · 3 评论 -
数据结构 串的定长顺序存储
目录串类型的定义术语描述串的定长顺序存储串的基本操作串的实现串类型的定义串(string)(或字符串)是由零个或多个字符组成的有限序列,一般记为 n 称为串的长度。零个字符的串称为空串,长度为0。串中任意个连续字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。通常称字符在序列中的序号为该字符在串中的位...原创 2019-01-11 17:52:47 · 1774 阅读 · 0 评论 -
数据结构 串的模式匹配算法BF、KMP
目录串的模式匹配朴素的模式匹配算法(BF(BruteForce)算法)BF的算法实现算法分析KMP模式匹配算法字符串前缀后缀最长公共前后缀next数组kmp算法实现KMP算法的改进nextval数组实现串的模式匹配模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。假设P是...原创 2019-01-12 02:27:32 · 1846 阅读 · 0 评论 -
数据结构 线性表的应用——经典题目分析
目录1、逆置单链表2、反转单链表3、合并两个有序的单链表4、判断单链表是否有环?环的入口点?环的长度?5、判断两个单链表是否相交?交点?6、O(1)时间删除单链表的一个节点7、最快时间内找到单链表倒数第K个节点?8、最快时间内删除单链表倒数第K个节点?9、 求两个顺序表的交集、并集和差集10、求两个有序单链表的交集、并集和差集11、求两个单链表(可以无...原创 2018-12-27 22:13:54 · 1467 阅读 · 0 评论 -
数据结构 栈和队列的应用——经典题目分析
目录1、数制转换 (顺序栈)2、表达式转换、求值 (顺序栈)3、字符串逆序输出 (顺序栈)4、括号匹配算法 (顺序栈)5、判断字符串是否为回文字符串 (顺序栈、链式栈)6、两个栈实现一个队列7、两个队列实现一个栈顺序栈与链栈的实现完整代码:https://blog.youkuaiyun.com/ZYZMZM_/article/details/85261502顺序队列、循环队...原创 2019-01-08 15:55:58 · 2760 阅读 · 3 评论 -
数据结构 顺序栈、链式栈
目录栈的定义顺序栈顺序栈的扩容链式栈顺序栈的实现顺序栈(扩容)的实现链式栈的实现栈的定义栈(STACK) 是 限定在表尾进行插入和删除操作的线性表栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈也...原创 2019-01-08 15:50:59 · 1314 阅读 · 0 评论 -
数据结构 循环顺序队列、链式队列、优先级队列
目录队列的定义顺序队列循环队列链式队列循环顺序队列实现链式队列实现栈和队列总结队列的定义队列(queue)是只允许在一端进行插入操作,另一端进行删除操作的线性表。队列是一种先进先出的线性表,允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。向队列中插入元素称为入队,从队列中删除元素称为出队。当队列中没有元素时称为空队列。队列的操作...原创 2019-01-08 15:53:43 · 1474 阅读 · 1 评论 -
数据结构 循环链表、双向链表
循环链表将单链表中终端结点的指针端由 NULL 改为 指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。循环链表解决了一个问题:如何从当中一个结点出发,访问到链表的全部结点。为使空链表与非空链表处理一致,通常设置一个头结点。 [并非必须设置头结点]对于非空的循环链表如下图:循环链表和单链表的主要差异就在于循环的条件判断上,原来是 ...原创 2018-12-25 19:50:23 · 831 阅读 · 0 评论 -
《剑指Offer》二叉树系列15道算法面试题解析(C++)
重建二叉树、树的子结构、二叉树的镜像、从上往下打印二叉树、二叉搜索树的后序遍历序列、二叉树中和为某一值的路径、二叉搜索树与双向链表、二叉树的深度、平衡二叉树、二叉树的下一个结点、对称的二叉树、按之字形顺序打印二叉树、把二叉树打印成多行、序列化二叉树、二叉搜索树的第k个结点原创 2019-06-07 00:53:58 · 2118 阅读 · 2 评论 -
LRU、LFU缓存机制的算法设计与实现
LRU缓存机制、LFU缓存机制、FIFO缓存机制、OPT缓存机制、LRU算法设计与实现、LFU算法设计与实现原创 2019-07-06 10:08:38 · 2676 阅读 · 0 评论 -
数据结构 单链表
目录线性表的链式存储结构1、链接存储方法2、结点结构3、头指针head和终端结点线性表链式存储结构的建立单链表的基本操作1、初始化单链表2、得到一个结点3、头插法4、尾插法5、pos 位置插入6、是否为空7、查找 key 的前驱8、删除data域为key的结点9、摧毁函数10、求单链表的长度11、打印单链表completec...原创 2018-12-09 01:55:02 · 1409 阅读 · 1 评论 -
数据结构 顺序表
目录线性表的顺序存储结构顺序表的实现方法线性表顺序存储结构的建立顺序表的基本操作1、顺序表的初始化2、在 pos 位置插入 val 值3、从pos位置开始查找 key 值4、删除 pos 位置的值5、删除一个 key 值6、得到pos位置的元素值7、求顺序表长度8、清空顺序表9、打印顺序表具有动态扩容的线性表顺序存储结构的建立1、顺序表...原创 2018-12-09 01:54:14 · 1366 阅读 · 0 评论 -
八大排序算法原理及实现
概述算法分类1、根据使用内外存分类排序分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。八大排序指内部排序。2、根据是否进行元素比较分类非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非...原创 2018-11-20 19:19:54 · 2372 阅读 · 0 评论 -
排序算法 | 归并排序
归并排序归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两...原创 2018-11-20 19:18:26 · 957 阅读 · 0 评论 -
排序算法 | 堆排序
堆排序堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点了解堆结构堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编...原创 2018-11-20 18:59:16 · 989 阅读 · 0 评论 -
排序算法 | 快速排序算法及其优化
目录快速排序(Quick Sort)1、算法描述2、算法分析——快速排序一次划分的三种实现方式(1) 挖坑法(2) 左右指针法(3) 前后指针法3、算法分析——快速排序基准数的三种选取方式(1)固定位置选取基准(2)随机位置选取基准(3)三分取中法选取基准4、算法分析——快速排序的两种优化(1)当数据量很小时,采用直接插入排序(2)聚集相同基准法...原创 2018-11-20 18:37:51 · 1720 阅读 · 1 评论 -
排序算法 | 直接选择排序
目录直接选择排序(Straight Selection Sort)1、算法描述2、算法分析(1) 时间复杂度(2)算法稳定性3、算法实现4、算法示例直接选择排序(Straight Selection Sort)直接选择排序是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找...原创 2018-11-20 18:52:29 · 1132 阅读 · 5 评论 -
排序算法 | 希尔排序 (Shell排序)
目录希尔排序(Shell Sort)1、算法描述2、算法分析(1) 时间复杂度(2) 算法稳定性3、算法实现4、算法示例示例1:使用增量序列gap = {n/2 ,n/4, n/8 .....1}示例2:使用给定增量序列d={5,2,1}希尔排序(Shell Sort)希尔排序(Shell's Sort)是插入排序的一种,又称“缩小增量排序”(Dimi...原创 2018-11-20 18:52:14 · 1300 阅读 · 0 评论 -
排序算法 | 直接插入排序
目录直接插入排序(Straight Insertion Sort)1、算法描述2、算法分析(1) 算法复杂度(2) 算法稳定性3、代码实现4、算法示例 直接插入排序(Straight Insertion Sort)插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。1、算法描述...原创 2018-11-20 18:43:31 · 1624 阅读 · 0 评论 -
排序算法 | 冒泡排序及其优化
目录冒泡排序(Bubble Sort)1、算法描述2、算法分析(1) 时间复杂度(2) 算法稳定性3、算法实现(1)普通算法实现 (2)算法优化4、算法示例冒泡排序(Bubble Sort)冒泡排序是一种较简单的排序算法,基本思路就是交换排序,通过相邻数据的比较交换来达到排序的目的。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺...原创 2018-11-18 19:56:17 · 2189 阅读 · 1 评论