大顶堆和小顶堆 相关介绍可参看:北京大学空地学院数据结构与算法 第六章 6.8.2.2 小节 代码实现如下 class Heap: """二叉堆的实现 小顶堆""" def __init__(self): self.heapList = [0] # 默认一个 0 做占位,使得根节点的索引在 1 上 ...
分类:
编程语言 时间:
2020-07-27 23:32:44
阅读次数:
75
前言 上一节通过两个经理案例初步认识动态规划,今天这一节主要讲动态规划的理论知识。 “一个模型三个特征”理论讲解 实际上,动态规划作为一个非常成熟的算法思想,这部分理论总结为“一个模型三个特征”。 一个模型 一个模型指动态规划适合解决的问题模型。这个模型定义为“多阶段决策最优解模型”。 一般是用动态 ...
分类:
编程语言 时间:
2020-07-27 15:39:05
阅读次数:
71
python基础--面向对象 在这里我们和大家说一下,推荐几本python的好书。 python核心编程、基础教程、流畅的python、数据结构与算法(机械工业出版社)、cook book 推荐用书:python核心编程、流畅的python、cook book (1)super的应用 我们先看一下下 ...
分类:
编程语言 时间:
2020-07-26 15:35:17
阅读次数:
74
树的应用:表达式解析 解析全括号表达式:(3+(4*5)) 创建过程: 创建空树,当前节点为根节点 读入'(',创建了左子节点,当前节点下降 读入'3',当前节点设置为3,上升到父节点 读入'+',当前节点设置为+,创建右子节点,当前节点下降。 读入'(',创建左子节点,当前节点下降 读入'4',当 ...
分类:
编程语言 时间:
2020-07-26 15:03:22
阅读次数:
59
前言 今天开始学习动态规划,一共有三节,分别是:初识动态规划、动态规划理论、动态规划实战。今天这一节就是初识动态规划。 动态规划比较适合用来求解最优问题,比如最大值、最小值等等。它可以非常显著地降低时间复杂度,提高代码的执行效率。 下面会通过两个非常经典的动态规划问题模型来展示为什么需要动态规划,以 ...
分类:
编程语言 时间:
2020-07-26 02:04:55
阅读次数:
112
一、什么是多路查找树 二叉树有诸多便利之处,但是当二叉树节点极多时,二叉树的构建速度就会受影响,而且过高的层数也会导致对树的操作效率降低。 对于树的查找而言,树的高度决定了查找的时间下限,但是同样数量的节点,如果要高度小那每一层容纳的节点就要多,而二叉树每一层固定的节点数导致的高度难以降低,为此每一 ...
分类:
编程语言 时间:
2020-07-26 01:29:40
阅读次数:
74
前言 本篇文章收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识。 你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。 上一节,我们一起学习了表示复杂度的几个符号,我们说,通常使用大O来表示算法的复杂度,不仅合理,而且书写方便。 那么,使用大O表示法评估算法 ...
分类:
其他好文 时间:
2020-07-25 23:47:01
阅读次数:
85
##绪论 算法:即是在特定计算模型下,旨在解决特定问题的指令序列 要保证正确性、确定性、可行性、有穷性 有穷性: ###例子1:HailStone序列 @Test public void test1() { int n = 7; int length = 1; while (n > 1) { n = ...
分类:
编程语言 时间:
2020-07-24 22:12:42
阅读次数:
88
《数据结构与算法分析C语言描述》-第二版 ###1.插入排序 插入排序由N-1趟排序组成,第P趟排序之前,前P个元素已经排好序。第P趟排序时,前P个元素中大于第P+1个元素的数全部右移一位,然后将第P+1个元素插入对应的位置。 插入排序的时间复杂度为$O(N^2)$。 void InsertionS ...
分类:
编程语言 时间:
2020-07-24 16:52:27
阅读次数:
66
题目链接 树哈希直接套就完了 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned long long ll; 4 const int N=1e5+10,M=19260817,inf=0x3f3f3f3f,mod=1e ...
分类:
编程语言 时间:
2020-07-24 16:00:39
阅读次数:
74