算法
yang haikun
这个作者很懒,什么都没留下…
展开
-
算法第一部分(2)
堆堆主要使用来动态数据维护优先队列定义:优先队列区别于普通队列在于普通队列是先进先出,后进后出。而优先队列的出队顺序与入队顺序无关,而与数据的优先度有关二叉堆定义:二叉堆需要满足的性质有:1.二叉堆必须是一颗完全二叉树(指除最后一层外,其他层的节点必须为最大值,即第一层有一个,第二层有两个,第三层有四个。且最后一层的节点需集中在左侧)2.如果是最大堆,即子节点的值不能大于其父节点的值...原创 2019-06-05 16:50:52 · 85 阅读 · 0 评论 -
算法第二部分(3)
算法第十二章avl树avl树 让二分搜索数维持成平衡二叉树满二叉树一定是平衡二叉树,叶子节点需要在最后一层或倒数第一层,且却缺少的叶子节点一定是在右下角avl树相对平衡二叉树定义相对宽松,即对于任一节点,左右子树高度差不能大于1需要标柱节点的高度计算平衡因子:左右指数的高度差相减根据平衡因子,维持一棵树为平衡二叉树通过右旋转保持平衡二叉树性质LL RR(新插入节点在不平衡节点的...原创 2019-06-18 20:54:25 · 84 阅读 · 0 评论 -
算法第一部分(3)
并查集定义:并查集是一种不一样的树形结构,可以使用并查集来解决连接问题可以使用并查集来解决1.网络节点间的连接问题 2.数学中的集合类的实现并查集的查找与连接:并查集某索引的值就是其父节点的值。向上查找到父节点指向自己的值就是根节点。可以通过查找两个元素之间的根节点是否相等得出他们是否连接。如果需要将两个点相连,只需要将其中一个节点的根节点指向另一个节点的根节点就可以使两节点相连基于siz...原创 2019-06-09 20:30:09 · 130 阅读 · 0 评论 -
算法第一部分(4)
有向带权图最短路径问题单源最短路径:从一点到其他所有点的最短路径问题松弛操作:尝试经过这个节点绕一下是不是不经过这个节点所得的最短路径还要短dijkstra 算法前提:图中不能有负权边复杂度O(ElogV)确定新的节点的最短路径后,进行松弛操作// Dijkstra算法求最短路径public class Dijkstra<Weight extends Number &...原创 2019-06-09 22:58:08 · 78 阅读 · 0 评论 -
算法第二部分(4)
红黑树定义:红黑树是一颗二分搜索树,并保证自己是一颗平衡二叉树红黑树性质:2 - 3树满足二分搜索树的基本性质节点可以存放一个元素或两个元素每个节点可以有两个孩子或三个孩子二三树是一颗绝对平衡的树二三树添加节点,永远不会添加到一个空的节点,当某一个节点为4节点时,就会分裂成一个三个节点的树。如果分裂后的树不是一颗绝对平衡二叉树,则将中间节点向上融合,形成:红黑树和二三树...原创 2019-06-16 16:14:29 · 116 阅读 · 0 评论 -
算法第一部分(1)
算法相关1.学习算法,最好先了解数组,链表,堆,栈等线性结构2.对递归,遍历,算法复杂度有着常识性理解3.主要包括三方面的知识:线性(主要是排序) — 树形结构 — 图形结构选择排序法定义:选择排序每次都从剩下的n - i 个元素找到最小的数,并与i位置的数交换位置。public void selectionSort(T[] arr,int n){ for (int...原创 2019-06-04 20:39:46 · 142 阅读 · 0 评论 -
算法第二部分(1)
算法第一章使我们可以高效获取数据和修改数据分为 线性结构,树结构,图结构数据库中包含大量数据结构,系统任务切换,文件切换,寻路算法。线性结构数组,栈,队列,链表,哈希表其中,动态数组,栈,队列,底层依托静态数组,靠resize解决固定容量问题树结构二叉树,二分搜索树,红黑树图结构邻接矩阵,邻接表算法第二章新建一个数组private E[] data; //data...原创 2019-06-16 20:31:19 · 109 阅读 · 0 评论 -
算法第二部分(2)
算法第六章树结构非线性树结构本身是一种天然的组织结构 (文件目录结构,企业层级结构)将数据使用树结构存储后,出奇的高效二分搜索树二叉树:和链表一样,是动态的数据结构二叉树具有唯一跟节点(左孩子和右孩子)二叉树具有天然递归结构(链表是线性的,循环更好处理)二叉树不一定是满的二分搜索树是二叉树二分搜索树的每个节点的值: 大于其左子树的所有节点的值 ...原创 2019-06-18 16:43:06 · 70 阅读 · 0 评论