![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
CookieYangK
这个作者很懒,什么都没留下…
展开
-
排序算法-堆排序
1.堆排序(以大顶堆为例) (1).堆排序简介: 堆排序是一个时间复杂度为O(nlog2n)(初始化堆的次数n(几个排序的数字初始化堆几次) × 建堆的过程 log2n(找最大数字的过程))、空间复杂度为O(1)(排序过程并不需要新的空间来存储数据)以及非稳定(建堆的过程可能会改变两个相同数字的相对位置)的排序算法。 (2).堆排序对数据结构的要求: 堆排序在排序过程中必须维护一个完全二叉树.我们使用数组来模拟堆,并以下标的方式来构建父节点与子节点存在的物理关系。 (3).堆排序详解原创 2021-05-13 18:23:08 · 1055 阅读 · 0 评论 -
动态规划-从斐波那契开始
1.动态规划的思想 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的..原创 2021-05-13 18:29:14 · 80 阅读 · 0 评论 -
动态规划-求一个数组中不相邻的数值的和的最大值
如一个数组是这样的:[1,4,3,5],那么最后和为下标第1个4和下标第三个5组成最大值9.通常在这种情况下,我会以最后一个数值从后往前进行一个推理。以[1,4,3,5]为例,当我们选择5这个数的时候,那么它就不能选择3而只能选择4以前的,而当我们不选择5的时候,那么就可以选择3了。递归的方式:递归的跳出条件:(1).当只有一个数时,那么该数就是最大值(2).当有两个数时,那么选择两个数中较大的值为最大值递归代码:/** * @Author: YangK * @CreateDate:原创 2021-05-13 18:33:41 · 1536 阅读 · 0 评论