
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
树的递归结构在正式学习树(tree)这个结构之前,我们实际上已经接触过这个结构了,堆(heap)实际上就是一个特殊的树,一棵完全二叉树。现在我们从一幅图中来了解一下什么是树状结构:这幅图主要说明cart这个单词的所有可能的组合结构,按照常理,我们先考虑三个字母的排列,然后由三个字母的排列中再进行拆分,最后重复拆分直到仅有一个字母。这个套路是不是很像我们之前学过的devide —— co
图的简介我们先回顾一下之前介绍的树的概念,在树的定义中,每个节点只能有一个父类,并且树中不能出现有环形。但是你可曾想过,当一棵树没有任何规则的时候,会发生什么吗?现在,我们给图(graph)下一个定义:图,是一种用节点和边来表示相互关系的数学模型。(A graph is a mathematical structure for representing relationships us...
hash函数的引入在介绍hash函数之前,先说个实际的例子。我是个比较乱的男生,袜子啊,书籍什么的都乱扔。那么哪天如果要找某件东西,在最坏的情况下,你需要找遍你房间的所有角落。但是,如果你是个爱收拾的男生,那么你要找某件东西的话,直接去对应的地方去寻找就好了。如果用算法复杂度表示,那么前者就是O(N)和后者是O(1)。我们现在思考,能不能将这样的结构用于数据结构当中呢?看下图:图一那么...
树的存储结构之前我们提到过堆是一棵特殊的树,在堆的存储方式中,我们选择了数组的方式去存储。因为只要知道一个节点的位置我们就能找到其他的节点的位置。但是前提是堆是一棵完全二叉树。树的结构多种多样,没人规定说一个节点只能有一个孩子。我们先看下图,一个最简单的二叉树:怎么表达?看到箭头,我们应该立马反应过来一个基本的工具,没错就是指针,应该立马反应过来一个数据结构,那就是链表!对
这部分内容其实是递归策略的一部分,但是里面涉及到了一些面向对象的知识,所以我就先总结了面向对象那一部分。这部分内容不得不说还是很有意思的。迷宫问题曾经在希腊神话时代,地中海的克里特岛被一个名叫米诺斯的暴君统治了(这是一头公牛头和一个人的身体的可怕的野兽)。米诺斯不时要求雅典市青年男女的形式致敬,选中的年轻人将祭祀到牛头人。 为了容纳它,米诺斯迫使他的仆人戴德洛斯(后来通过建造一套翅膀逃离的工程天才
本地在线文档的搭建(前篇)

本章前面介绍的合并排序算法在理论上表现良好,也具有O(N log N)的最差情况复杂度,实际上并没有太多的应用。 相反,目前使用的大多数排序程序都是基于由英国计算机科学家C.A.R.(Tony)Hoare开发的称为Quicksort的算法.。快速排序原理Quicksort和合并排序都采用分治法。在合并排序算法中,原始vector被分为两部分,每一个被独立排序。 然后将所得到的排序向量合并在一起..
对DFS的过程分析
希尔排序原理希尔排序(Shell’s Sort),也称为“缩小增量排序”,是一种插入排序类的算法。最简单的插入排序,我在上一个专栏的一篇文章C++抽象编程——算法分析(8)——插入排序算法与分析有提到过,这里就不再赘述,这里就只介绍一些我以前没写过的算法。希尔排序是一种改进的插入排序算法。其基本思想如下:将整个待排序列分割成若干个自序列,然后对每个子序列分别进行直接插入排序算法。待整个序列中的..
问题的提出如下图,假设这里有一系列的房屋,问如何铺设电线,可以使得连接所有房屋的电线的总成本最低?这是20世纪20年代早期研究最小生长树的最初动机。 (捷克数学家OtakarBorůvka完成的工作)。最短路径树与最小生成树(MST)上次,我们看到了Dijkstra算法如何用于在图中找到最短路径树。请注意,最短路径树可能不是MST,反之亦然。为什么这么说呢?最小生成树(或MST)是总成本...







