数据结构
刀剑如梦TOTO333
这个作者很懒,什么都没留下…
展开
-
图的应用-拓扑排序与关键路径(JAVA实现)
AOV与AOE AOV网(用于解决拓扑排序):用节点表示活动,弧表示优先制约关系 若存在从节点 i 到节点 j 的路径,则 i 为 j 的前驱,j 为 i 的后继 AOV网中不允许有回路,判断是否有回路的方法是,将AOV网中的所有节点进行拓扑排序形成有序序列,若存在<i,j>,则序列中节点 i 必然在节点 j 前 AOE网(用于解决关键路径):用弧表示活动,节点表示活动的开始和结...转载 2020-02-03 16:56:38 · 492 阅读 · 0 评论 -
图的应用-最短路径(JAVA实现)
Djkstra算法-用于求解单源最短路径问题 设有向图如下,求解V0到其余节点的最短距离 流程: 1)记录V0节点到其余节点的路径与距离,初始时均为直达路径 2)选取集合中的最短路径,路径的另一端点为X 3)若V0经由X到其他节点存在一条更短的路径,则用新路径替代 4)如此循环,直到获得V0到其余节点的最短路径为止 申请一个节点集合,只包含V0顶点 若有N个节点,则希望N-1轮后,所...原创 2020-02-01 16:59:36 · 1261 阅读 · 0 评论 -
图的概念+存储+遍历(JAVA)
图的存储结构 十字链表(针对有向图) 由于简单的拉链法对有向图太不友好(统计入度需要扫描全表),所以引入十字链表。 十字链表由数组+链表组成,数组存放节点对象,链表存放边对象。 这样的优势是,顺着出边表可以找到所有以该节点为出点的边,顺着入边表可以找到所有以该节点为入点的边。 /** * 十字链表 * 针对有向图 */ public...原创 2020-01-26 17:33:03 · 214 阅读 · 0 评论 -
选择排序之堆排序
流程:设待处理序列为【2,7,3,5,1,8,4】 设置哨兵:将序列存入大小为8的数组中,A[0]为哨兵,A[1]=2,A[2]=7依次类推 构造堆:由于根节点与其左右子树节点的序号关系为:左子树=2*根,右子树=2*根+1,所以构造的初步堆为 选择最大值放到根部:由最后一个非叶子节点开始往回遍历,若其叶子节点存在>根节点者,则交换位置,直到遍历到整棵树的根部 取出最大值放在序列尾部...原创 2020-01-19 21:52:50 · 120 阅读 · 0 评论 -
交换排序
冒泡排序 设序列为【9,8,7,6,5,4,3,2,1】,希望由小到大排列 流程: 从前往后,或从后往前,两两比较相邻元素的值,若出现逆序,则交换他们 下一趟冒泡,已有一个元素确定最终位置,待处理序列规模减1,依次类推 同时为了减少无逆序情况下的循环次数,设置一个标记位,如果第一趟两两对比无交换产生,说明序列有序,直接跳出循环 运行结果:我习惯从后往前,称之为沉塘法 知识点: ...原创 2020-01-18 18:02:48 · 665 阅读 · 1 评论 -
插入排序
直接插入排序 流程:若待处理序列为【9,8,7,6,5,4,3,2,1】,则: 设置哨兵:将序列放入大小为10的数组A中,其中A[0]作为哨兵,A[1]=9,A[2]=8依次类推 是否移动:A[1]不动,从A[2]开始处理,然后前者比较,若小于前者说明需要移动,将待处理数x存入哨兵 移动:从后往前,依次将x之前的元素向后移动,直至碰到小于x的元素为止,再将x从哨兵中取出,放入指定位置 ...原创 2020-01-17 23:02:13 · 113 阅读 · 0 评论 -
数据结构
目录 二叉排序树的增删改查 平衡二叉树AVL 红黑树 B树 散列表 散列表与hashMap 二叉排序树的增删改查 平衡二叉树AVL 1.插入时单旋转 1)若当前节点,| 左子树高度-右子树高度 | >1,则开始准备旋转 a.若当前节点的左孩子的左孩子leftLeft高度 > leftRight ,则左单旋转 b.若当前节点的右孩子的右孩子rightRight高...原创 2019-09-17 10:29:24 · 152 阅读 · 0 评论