随笔分类 - 数据结构与算法
最小生成树
摘要:Prim 算法:Prim 集,已添加至 Prim 树中顶点集,在每个迭代中加入边 (u, v) ,u 是 Prim 集中点, v 是集外点(最小边),将边加入,将 v 纳入 Prim 集中 Kruskal 算法:加入最小树边,不形成回路,伪代码 Prim, Kruskal算法求组成树的边最小
阅读全文
单源最短路径问题-Dijkstra算法
摘要:同样是层序遍历,在每次迭代中挑出最小的设置为已知 2017年9月18日10:00:03 dijkstra并不是完全的层序遍历,在第次迭代中挑出未遍历的最小的边,一种信心的应用 dijkstra算法是求带权单顶点到其他顶点的最短路径问题 表初始化 显示实际路径 算法伪代码
阅读全文
单源最短路径问题-无权最短路径算法
摘要:该算法解决的问题是:找出一个顶点到其他顶点的最短路径 无权最短路径算法:借助广度优先搜索,距开始最近的那些顶点首先被赋值,而最远的顶点最后被赋值 伪码如下
阅读全文
拓扑排序
摘要:对有向无边图的一种排序,它使得如果存在一条从 Vi 到 Vj 的路径,那么在排序中 Vj 出现在 Vi 后面 方法:找出任意一个没有入边的顶点开始,将其及其出度边删除,重复 伪码如下:
阅读全文
二项队列
摘要:堆序树的集合,森林 二项树 Bk 由一个带有儿子 B1 B2 ... Bk-1 的根组成 ,高度为 k 的二项树恰好有 2^k 个节点 目标:用二项树的集合惟一表示任意大小的优先队列 树的合并只在乎有没有保持堆序性,兄弟节点间没有要求 编程就是要让自己像计算机思考,一次只考虑一个步骤 合并 2 个优
阅读全文
表
摘要:在编程实现时可以利用额外的空间开销降低算法复杂度 表,即线性表,可用数组实现,或链表实现 链表实现有单链表,双向链表,和循环链表,基于链表的实现采用空结点方式心简化编程 栈的实现采用链表法,利用头插法,而数组实现保存其下标及容量可简化,通过下标取值 队列,数组实现:数组+头结点位置+尾结点位置+长度
阅读全文
快速排序
摘要:/*插入排序交换来,交换去,每次次确定一个元素的位置*/void Quicksort(ElementType A[], int N) { Qsort(A, 0, N-1); } ElementType Median3(ElementType A[], int Left, int Right) { int Center = (Left + Right)/2; if (A[...
阅读全文
归并排序
摘要:合并2个已排序的表 先将初始数组的两段完成排序后放在新数组中,再拷贝回去,由于采用递归方法处理,所以会将最下面的2个元素的先排序,1个的直接被返回了 这个过程一直重复直到完成
阅读全文
希尔排序
摘要:比较相距一定间隔的元素,间隔不断缩小 在每个步长的循环中,都是一个多次的比较,如: 0 step step*2... 1 step+1 step*2+1... ... 即在每个步长中,不求全部排好序,只求i(0 ~ N-1)开始的每个step为步长的分元素排好序 步长为1时,直接进行了插入排序
阅读全文
浙公网安备 33010602011771号