
算法与数据结构
文章平均质量分 81
DZGNB
学习使我快乐
展开
-
c++算法《打家劫舍》与《机器人路径》与《0、1背包》
文章目录一:打家劫舍 一:打家劫舍 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3) 偷窃到的最高金额 = 1 + 3 = 4原创 2021-04-29 19:09:48 · 263 阅读 · 0 评论 -
c++算法和数据结构之《LCS》
文章目录动态规划求解最长公共子序列的结构 动态规划求解最长公共子序列的结构 分析规律: 设X=<x1,x2,x3,x4…,xm>,Y=<y1,y2,y3,y4…,yn>为两个序列,Z=<z1,z2,z3,z4…,zk>是他们的任意公共子序列 经过分析,我们可以知道: 1、如果xm = yn,则zk = xm = yn 且 Zk-1是Xm-1和Yn-1的一个LCS 2、如果xm != yn 且 zk != xm,则Z是Xm-1和Y的一个LCS 3、如果xm != yn 且原创 2021-04-24 10:52:05 · 502 阅读 · 0 评论 -
c++算法和数据结构之《归并排序》
文章目录归并排序1、思路(单步合并)2、递归归并算法3、非递归归并算法 归并排序 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为时间复杂度始终都是O(n log n)。代价是需要额外的内存空间。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路原创 2021-04-22 21:54:33 · 226 阅读 · 0 评论 -
c++算法和数据结构之《AVL树》
文章目录AVL树定义: AVL树定义:原创 2021-04-15 23:13:28 · 484 阅读 · 1 评论 -
c++算法和数据结构之《BST树》
文章目录一: BST树定义与特征1、BST树的结构设计2、创建一个节点3、BST树的插入 一: BST树定义与特征 BST树,及二叉搜索树(Binary Serch Tree),又叫二叉搜索树或二叉排序树。它可以是一棵空树,也可以是具有以下特征的一棵二叉树。 ①BST树上不存在键值相等的节点 ②若他的左子树不空,则左子树上所有节点的值均小于它的根节点的值 ③若他的右子树不空,则右子树上所有节点的值均大于它的根节点的值 ④任何一个节点的左子树或者右子树都是一棵BST树 ⑤对BST树进行中序遍历,就可以得到一个原创 2021-04-12 11:40:59 · 506 阅读 · 0 评论 -
C++算法和数据结构之《二叉树》
文章目录一:树的定义二:二叉树的定义:1、**二叉树的结构设计**2、创建一个节点3、返回所找值的下标3、前序遍历二叉树4、中序遍历二叉树5、后序遍历二叉树 一:树的定义 树是由 n (n>= 0)个结点组成的有限集合。 如果 n = 0,称为空树;如果 n > 0,则 ① 有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱; ②除根以外的其它结点划分为 m (m >= 0)个互不相交的有限集合 T0, T1, …, Tm-1,每个集合又是一棵树,并且称 之为根的子树(原创 2021-04-05 16:00:57 · 342 阅读 · 0 评论 -
C++算法和数据结构之《二分查找、斐波那契、快排》
文章目录一:二分查找二:斐波那契 一:二分查找 二分查找要求所查找的顺序表必须是有序的。定义left为顺序表最左端元素位置,right为顺序表右端元素位置。定义mid = (left + right) / 2,即顺序表的中间位置,然后用所查找的值与mid所在位置处的值比较,由于列表有序,若所查找的值比mid小,则只需在表的前半部分查找,否则只需在表的后半部分查找(若第一次比较就发现两值相等则直接返回当前值所在的位置),以此类推,直至查找到所寻找的值或确定所查找的值不在该列表内为止(即查找失败)。 代码:原创 2021-03-22 11:03:05 · 312 阅读 · 0 评论