算法
ALONER灬C
这个作者很懒,什么都没留下…
展开
-
Java实现最小生成树算法(Prim算法)
Prim算法Prim算法,每一步都会为一颗生长中的树添加一条边。一开始这棵树只有一个顶点,然后哦会向它添加V-1条边,每次总是将下一条连接树的顶点与不在树中且权重最小的边加入树中实现最小生成树的延迟实现通过一个队列保存最小生成树的边(横切边) Queue mst一个最小优先队列保存所有的边 MinPQ pq 通过删除最小边来得到新的最小生成树的边,通过基于堆的最小优先队列来...原创 2019-06-21 10:29:15 · 3636 阅读 · 0 评论 -
六大排序实现及性能特点
1. 选择排序方法:首先找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小的元素那就和它自己交换)。再在剩下的元素中找到最小的元素,将它和数组的第二个元素交换;一直反复直到整个数组排序。特点: 运行时间和输入无关交换共次数为N,算法的时间效率取决于比较的次数 数据移动是最少 时间复杂度:N^2 空间复杂度: 12. 插入排序方法: 找到最小的...原创 2018-12-03 20:31:55 · 155 阅读 · 0 评论 -
Java 基于堆的最大最小优先队列
优先队列解释: 在程序中需要有序的处理一批程序,但一定要求它们全部有序,或者是不一定要一次就将它们排序; 很多情况都是收集一些元素,然后处理最大/最小元素,也就是应该支持删除最大/最小元素和插入元素的一种数据结构。定义: 优先队列是一种抽象数据类型(能对使用者隐藏数据类型),它表示了一组值和对这些值的操作,它的抽象层能使我们方便的将我们的应用程序和我们的具体实现分离开来堆堆可以理解为是一种...原创 2019-06-22 09:36:36 · 1237 阅读 · 0 评论 -
最小生成树算法(Kruskal算法)
主要思想按照边的权重顺序(从小到大)处理它们,将边加入到最小生成树中,加入的边不会和已经加入的边构成环,直到树中V-1条边为止,这些一开始并不一定是互相连接的,但是后面会慢慢逐渐由一片森林组成一颗树,也就是图的最小生成树定理: Kruskal算法能够计算任意加权连通图的最小生成树证明: 因为下一条被加入的边不会与最小生成树中已经存在的边构成环,那么它就跨越了和树中顶点相邻的顶点组成的集合的补...原创 2019-06-22 11:28:32 · 554 阅读 · 0 评论 -
二叉查找树的删除和插入
定义:一颗二叉查找树是一颗二叉树,其中每个结点都包含一个Comparable的键(以及向关联的值)且每个结点的键都大于其左子树中的任意结点的键而小于右子树中任意结点的键插入实现:先递归找出新结点插入的位置;逻辑是如果树是空的,就返回一个含有该键值对的新节点,如果要插入的键小于根结点的键,就继续在左子树递归查找插入改键,否则在右子树中插入该键private Node put(Node x,...原创 2018-11-17 17:51:41 · 341 阅读 · 0 评论