数据结构与算法
368chen
这个作者很懒,什么都没留下…
展开
-
算法笔记(40)
1 斐波拉契数列,递归,复杂度2的n次方e 二分查找:O(logn) 二叉树的遍历:O(n) 每个节点遍历仅遍历一次 排序的二维矩阵的查找:O(n) 快排:O(nlogn) 2 优先队列 正常入,按优先级出。实现机制:1) 堆(二叉堆,多项式堆,斐波拉契堆),二叉搜索树。 小顶堆:最小的在最上面 3 Hashmap:平均时间复杂度:查找,删除,插入复杂度O(1)。最差的时间复...原创 2019-12-28 16:23:38 · 126 阅读 · 0 评论 -
数据结构与算法-链表
1 链表逆序你会吗? 递归和非递归 2原创 2019-10-25 10:23:33 · 99 阅读 · 0 评论 -
python 和数据结构
https://www.nowcoder.com/discuss/231656?type=post&order=time&pos=&page=1 1 python为什么会慢? 是一个动态的解释型语言,python 中的值不少存储在缓存区而是分散存储在对象中 python 是一门解释器语言,C++ 编译语言,也就是说C++ 程序首先要编译源程序,生成可执行文件一个...原创 2019-10-24 10:17:43 · 283 阅读 · 0 评论 -
路径规划算法对比
1Dijkstra - 静态最短路计算,O(N^2) 所求的是单源最短路,好比说你写好了Dijkstra的函数,那么只要输入点a的编号,就可算出图上每个点到这个点的距离。 算法思路和代码: https://www.cnblogs.com/jason2003/p/7222182.html https://www.cnblogs.com/wymlnn/p/4446838.html ht...原创 2019-04-09 10:14:38 · 7292 阅读 · 0 评论 -
数据结构与算法-堆
堆:完全二叉树,高度为O(lgn),基本操作至多和树的高度成正比, 构建堆的时间复杂度是O(n), 堆是一颗完全二叉树,假设有n个节点,树高h=log2(n).证明方法如下: 1 )假设根节点的高度为0,叶子节点高度为h,每层包含元素个数为2^x,x 从0 到h。 2 )构建堆的过程是自下而上,对于每层非叶子节点需要调整的次数为h-x,因此很明显根节点需要调整(h-0) 次,每一层节点需要...原创 2019-08-31 22:20:29 · 391 阅读 · 0 评论 -
数据结构-二叉树的种类和介绍平衡二叉树
树的结构包括: 1 二叉查找树;平衡二叉树;红黑树;B-树;B+树; 字典树; 后缀树; 广义后缀树。 如果树不是一颗空树的话,那么二叉查找树具有以下特征: 1.1 若左子树不为空,那么左子树所有的节点的值小于均小于他的根节点的值 1.2 若由子树不为空,那么右子树的所有的节点的值大于根节点的值 1.3 左右子树也分别为二叉排序树 1.4 没有键值相等的节点 2 平衡二叉树 AV...原创 2019-09-14 16:41:54 · 524 阅读 · 0 评论 -
深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索和广度优先搜索都是图形搜索算法, 1 深度优先搜索 是针对图和树的遍历算法,利用深度优先搜索算法可以产生目标图的相应的拓扑排序表,利用拓扑排序表可以方便的解决了很多相关的图论问题,如最大路径问题,一般用堆数据结构来辅助实现DFS 算法,其过程要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只访问一次 2 广度优先搜索是连通图的一种遍历算法,Dijstra 单源最短...原创 2019-09-14 16:59:12 · 592 阅读 · 0 评论 -
数据结构与算法-归并排序
原理: 是一种递归算法,不断将列表拆分为一半,如果列表为空或右一个项,则按照定义进行排序,如果列表有多个项,则分割列表并递归调用两个半部分的合并排序,一旦对两半排序完成,获取两个较小的排序列表并将它们组合层当个排序的新列表的过程。 时间复杂度O(nlogn) ...原创 2019-09-15 11:52:02 · 84 阅读 · 0 评论