算法
MKhaha20930079
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法——排序算法
冒泡排序、选择排序、插入排序、希尔排序import java.util.Arrays;import java.util.Random;public class Test { private static int[] getRandomInts(int count, int max) { if (count <= 0 || max <= 0) { ...原创 2019-02-04 17:10:36 · 179 阅读 · 0 评论 -
算法——红黑树
定义近似平衡的二叉搜索树 二叉搜索树可能退化成链表,也就有了“平衡”搜索树,树高h=O(log(n)),保证了树高,也就保证了基本操作时间复杂度的稳定性。红黑树是一种“平衡”二叉搜索树。当然不是严格平衡,“红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的”。性质或者说定义每个结点或者是红色的,或者是黑色的。根结点是黑色的。每个叶结点(叶结点即指树尾端NIL结点)是黑色...原创 2019-02-12 09:27:57 · 651 阅读 · 0 评论 -
算法——二叉搜索树
二叉搜索树定义首先应该是二叉树;其次某节点左子树键值小于该节点键值,其右子树键值大于等于该节点键值。基本性质二叉搜索树的基本操作(search、min、max、insert、delete)和树高成正比;随机构造的二叉搜索树,树高期望值为O(log(n)),说明两点:A.无论如何变化,树高在O(log(n))上下变化;B.二叉搜索树可能退化成链表,也就是树高就是节点个数,红黑树就是...原创 2019-02-11 16:28:50 · 419 阅读 · 0 评论 -
算法——二叉树遍历
二叉树前序、中序、后序,递归、非递归遍历import java.util.ArrayList;import java.util.List;import java.util.Stack;public class BinaryTree { static class Node { public Node left; public Node right...原创 2019-02-10 19:15:22 · 247 阅读 · 0 评论 -
算法——分治、动态规划、贪心算法
分治、动态规划、贪心算法的对比 文章分治法,动态规划及贪心算法区别中比较三种算法思路,简而言之,很多问题都可以用分治思路求解,将复杂问题转化为多个稍微简单的子问题,问题分解为子问题,犹如树形结构一般,但树的分叉(问题的分级扩展)有二叉树、B树,分叉等级不同;但一些问题的子问题,相互独立,且有重叠,导致树的分叉(问题的分级扩展)很少,子问题的数目约等于子子问题的数目。至于贪心算法,问题直接转化为...原创 2019-02-09 09:46:57 · 515 阅读 · 0 评论 -
算法与数据结构——Dijkstra算法
单源最短路径 给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径问题。 Dijkstra算法和图的广度优先搜索算法有很多相似,不同之处除了距离(在广度优先搜索中称为度数)和权重有关外,算法遍历过程是从队列中取距离最小的节点,即使用优先队列,...原创 2019-02-15 21:45:57 · 1007 阅读 · 0 评论 -
算法——找出N个整数中最大的K个数(Java实现)
引言 算法思路来自找出N个整数中最大的K个数,可以看出,TopK问题,基本上是排序算法的延伸:利用全排序,再倒数K个数;快速排序,分区分治;类似快速排序,分区找第K大的数;堆排序,建立最小堆;计数排序,先计数,再倒数K个数;实现import java.util.Arrays;import java.util.Random;public class TopK { ...原创 2019-02-08 12:17:08 · 3121 阅读 · 1 评论 -
算法——排序
十种排序算法实现import java.util.*;public class Test { private static int[] getRandomInts(int count, int max) { if (count &lt;= 0 || max &lt;= 0) { return null; } ...原创 2019-02-07 09:56:02 · 260 阅读 · 0 评论 -
算法——排序之三
计数排序、桶排序、基数排序 /** * 计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 * 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。 * &lt;p&gt; * 算法描述: * 1.找出待排序的数组中最大和最小的元素; * 2.统计数组中每个值为i的...原创 2019-02-07 09:35:56 · 219 阅读 · 0 评论 -
算法——排序之二
归并排序、快速排序、堆排序 /** * 归并排序是建立在归并操作上的一种有效的排序算法。 * 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 * 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 * 若将两个有序表合并成一个有序表,称为2-路归并。 * &lt;p&gt;...原创 2019-02-05 20:09:27 · 201 阅读 · 0 评论 -
算法与数据结构——图表示与搜索
图表示无向图表示有向图表示 ; 个人偏向于邻接链表表示法,比较简单方便,占用空间也不大。图遍历广度优先搜索 每个结点初始颜色为白色,被发现后,变为灰色,并将其插入队列,其邻接链表扫描完成后变为黑色;深度优先搜索 与广度优先基本相同,只是不再使用队列保存未扫描结点,而改为递归深度扫描。#代码(包括图表示、BFS、DFS)import java.util.*;pu...原创 2019-02-13 16:17:06 · 285 阅读 · 0 评论
分享