
数据结构和算法
文章平均质量分 92
AllenC6
来战
展开
-
学习贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。1.最优子结构性质当一个问题的最优解一定包含其子问题的最优解时,称此问题具有最优子结构性质。如何理解?换句话说:最优解一定是子问题的最优解组合而成的。没有这条性质,求出的最优解一定不是最优解,所以这才是重中之重。这也是动态规划问题的基石。2.贪心选择性质贪心选择性质时指所求问题的整体最优解可以通过一系列局部最优的选择获得,即通过一系列的逐步局部最优选择使得问题原创 2022-06-28 18:03:55 · 516 阅读 · 0 评论 -
动态规划算法
一、动态规划算法思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,原创 2022-04-08 19:28:15 · 21232 阅读 · 0 评论 -
数据结构堆
一、堆1.定义堆就是用数组实现的二叉树,所以它没有使用父指针或者子指针。堆根据“堆属性”来排序,“堆属性”决定了树中节点的位置。2.堆的属性 堆是一颗完全二叉树,这样实现的堆也被称为二叉堆 堆中节点的值都大于等于(或小于等于)其子节点的值,堆中如果节点的值都大于等于其子节点的值,我们把它称为大顶堆,如果都小于等于其子节点的值,我们将其称为小顶堆。 ...原创 2022-03-21 15:37:01 · 574 阅读 · 0 评论 -
十大排序算法
冒泡法排序、选择排序、直接插入法排序、快速排序、单路、双路、三路快排、希尔排序、归并排序、堆排序、桶排序、基数排序、计数排序 十大排序原创 2022-03-01 14:45:33 · 507 阅读 · 0 评论 -
红黑树详解,对插入旋转独到理解
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。将一个节点插入到红黑树中,需要执行哪些步骤呢?首先,将红黑树当作一颗二叉查找树,将节点插入;然后,将节点着色为红色;最后,通过旋转和重新着色等方法来修正该树,使之重新成为一颗红黑树。详细描述如下:第一步: 将红黑树当作一颗二叉查找树,将节点插入。 红黑树本身就是一颗二叉查找树,将节点插入后,该树仍然是一颗二叉...原创 2022-02-16 17:03:02 · 2330 阅读 · 1 评论 -
AVL树详解
一、简介AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。它是最先发明的自平衡二叉查找树,也被称为高度平衡树。上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1;而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树的高度是3,而以8为根节点的树的高度是1)。AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状..原创 2022-02-14 10:01:48 · 11412 阅读 · 0 评论 -
二叉树详解
1.这里就不介绍二叉树的相关概念,如,树高度,节点层数,节点度数,路径,叶节点,分支节点,根节点,父节点,左节点,右节点,兄弟节点,祖先节点,子孙节点,左子树,右子树等基本概念2.二叉树的分类(1).斜树斜树:所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树。左斜树:右斜树:(2).满二叉树国际标准定义是除了叶结点外每一个结点都有左右子结点的二叉树。如下图所示:注意:这里的定义与国内某些教材的定义不同,国内的定义是:原创 2022-02-10 19:27:45 · 1639 阅读 · 0 评论