数据结构与算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
C++数据结构与算法(动态规划)
动态规划(dynamic programming)与分治方法相似,都是通过组合子问题的解来求解原问题。分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将其划分为更小的子子问题)。在这种情况下,分治算法会做出许多不必要的工作,它会反复求解那些公共子问题...原创 2019-08-17 21:19:58 · 323 阅读 · 0 评论 -
三种快速排序以及快速排序的优化
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-16 10:47:09 · 709 阅读 · 0 评论 -
C++数据结构与算法(红黑树)
前情回顾:一棵高度为h的二叉搜索树,它可以支持任何一种基本动态几何操作,如查找、插入、删除等,其时间复杂度为O(h)。因此,如果搜索树的高度较低时,这些集合操作会执行得较快。然而,如果树的高度较高,这些集合操作可能比链表慢。红黑树(red-black tree)是许多“平衡”搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(logn)。Q1:什么是红黑树?...原创 2019-08-15 21:30:16 · 346 阅读 · 0 评论 -
C++设计模式
目录1设计模式概述2 工厂模式3单例模式4原型模式5桥接模式6适配器模式7装饰器模式8组合模式9门面模式10代理模式11策略模式12状态模式13职责链模式1设计模式概述作用: 面向对象系统的分析和设计实际上在追求两点:高内聚(Cohesion)和低耦合(Coupling)。因此,无论是封装、继承、多态还是设计模式都是为...原创 2019-08-14 21:51:34 · 238 阅读 · 0 评论 -
C++数据结构与算法(贪婪算法)
贪婪算法(Greedy Method)也称贪心算法,在贪婪算法中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦做出,就不可再更改。也就是说,它总是做出局部最优解的最优化问题。做出贪婪决策的依据称为贪婪准则(Greedy Criterion). 贪心算法并不保证得到最优解,对许多问题确实可以求得最优解。1 案例分析...原创 2019-08-16 17:35:36 · 641 阅读 · 0 评论 -
C++数据结构与算法(栈和队列)
目录1栈1.1栈定义1.2栈的表示和实现1.2.1顺序栈1.1.2链栈1.3栈的应用——括号匹配问题2队列2.1队列的定义2.2队列的表示和实现2.2.1链队列2.2.2循环队列2.3队列的应用——约瑟夫环问题1栈1.1栈定义 栈(stack)作为一种限定性线性表,是将线性表的插入和删除运算限制为仅在表的一端进行,通常将表中...原创 2019-08-02 10:51:28 · 2165 阅读 · 0 评论 -
C++数据结构与算法(二叉树)
目录1、树的两种定义2、相关概念3、二叉树3.1两种定义3.2二叉树和树的根本区别3.3二叉树的创建及遍历3.3.1(前序、中序和后序递归)3.3.2(前序、中序和后序非递归)3.3.3new/delete和malloc/free的区别3.3.4Practice3.4二叉树的特性3.5二叉树常用操作3.5.1统计二叉树的叶子节点数3.5.2返...原创 2019-07-30 21:21:50 · 7355 阅读 · 0 评论 -
C++数据结构与算法(七大查找)
目录1 顺序查找(Sequence Search)2 二分查找(Binary Search)3 插值查找(Interpolation Search)4 斐波那契查找(Fibonacci Search)5 二叉查找树(Binary Search Tree)6 分块查找(Block Search)7 哈希查找(Hash Search)1 顺序查找(Sequence...原创 2019-07-21 17:23:59 · 1095 阅读 · 0 评论 -
C++数据结构与算法(十大排序)
目录1 冒泡排序(Bubble Sort)2 快速排序(Quick Sort)3 插入排序(Insertion Sort)4 希尔排序(Shell Sort)5 简单选择排序(Selection Sort)6 堆排序(Heap Sort)7 二路归并排序(Merge Sort)8 基数排序(Radix Sort)9 桶排序(Bucket Sort)10...原创 2019-07-21 16:40:32 · 513 阅读 · 0 评论 -
C++数据结构与算法(单向链表)
目录1创建链表1.1创建链表的顺序结构写法1.2利用循环语句创建链表(正向创建)1.3利用循环语句创建链表(逆向创建)1.4改进写法2删除节点3增加节点4查找节点4.1链表查找元素的节点数或者按照节点查找数据域4.2查找链表中的最值5修改节点6链表逆置7删除链表中的最值8链表排序9链表合并9.1将两个不同排序的链表进行升序排列9....原创 2019-07-24 22:19:57 · 497 阅读 · 0 评论 -
C++数据结构与算法(绪论)
目录1、数据结构讨论的范畴2、基本概念3、算法和算法的量度1、数据结构讨论的范畴 Algorithm + Data Structures = Programs程序:为计算机处理问题编制的一组指令集。算法:解决问题的策略。数据结构...原创 2019-06-19 20:50:30 · 262 阅读 · 0 评论 -
C++数据结构与算法(图)
回顾:线性表中,每个元素只有一个直接前驱和直接后继,在树形结构中,数据之间是层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。但这都是一对一或一对多的简单模型。1 图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。注意:线...原创 2019-08-20 11:53:43 · 3913 阅读 · 0 评论