算法
文章平均质量分 88
mayifan_blog
湖南大学,电气自动化,自学互联网
展开
-
动态规划典型例题解析
什么是动态规划动态规划的主要思想就是把问题划分为一个个子状态,一个状态的最优解往往是基于其前一个的状态的最优解。两个状态之间的关系,我们就称之为状态转移方程。这里引出了状态和状态转移方程的概念:状态是一个当前的值,这个值是通过前一个值以及状态转移方程推得的。在解决动态规划问题的时候,我们往往会把问题建模为一个一维数组或是二维数组,处理完边界值之后,就可以通过前一个状态和后一个状态的递推关系循环解...原创 2018-12-20 23:09:08 · 6252 阅读 · 0 评论 -
回溯算法例题分析
什么是回溯算法**回溯算法的概念:**回溯算法是一种类似枚举但优于枚举的算法,它可以通过“剪枝”的方式去掉那些不可能的递归情况,从而得到实现解题目标的所有可行方案。回溯算法一般通过递归来实现,每个次递归前都要判断当前这种方案是不是有继续递归的必要,如果可以,就继续往深入递归,最终实现目标,如果在递归中发现不符合递归条件了,那么就“减掉”这个分支,程序回溯到之前的另一种可能性重新开始,继续往下递归...原创 2018-12-23 11:32:34 · 1341 阅读 · 0 评论 -
贪心算法的几种经典例题
什么是贪心算法贪心算法是一种在解决问题的过程中追求局部最优的算法,对于一个有多种属性的事物来说,贪心算法会优先满足某种条件,追求局部最优的同时希望达到整体最优的效果。以背包问题为例,可以放在背包中的物体有它的重量和价值两种属性,背包的容量也是有限的,我们希望得到一种价值最大的物品摆放方式,如果我们倾向于重量贪心,那么在摆放物品的时候会优先放重量小的,但这和我们追求的价值最优没有关系,自然不能采用...原创 2018-12-18 13:32:47 · 54094 阅读 · 9 评论 -
Dijkstra算法Java实现
题目描述:给定一个图,给定各个顶点之间的路径长度,求解从图中一个节顶点出发到任意节顶点的最短距离。解题思路:我们采用Dijkstra算法求解最短路径,Dijkstra算法采用广度优先搜索和贪心策略实现求解单源最短路径。选择离出发顶点最近的顶点并以这个顶点为中心调整出发顶点到那些周边顶点的最短距离,不断遍历并且修正,直到从出发顶点到任意顶点的权重修正完全。例题图示:详细解题步骤:**1...原创 2019-01-03 13:37:21 · 8476 阅读 · 4 评论 -
八大排序java实现
八大排序介绍1、插入排序:直接插入排序、哈希排序。2、选择排序:直接选择排序、堆排序。3、交换排序:冒泡排序、快速排序。4、归并排序。5、基数排序。直接插入排序一、思路:我们先对前两个数进行排序,即先确定第二个数的位置,然后确定第三个数的位置,以此类推,直至全部排完。我们把这个数放入c中保存,然后依次拿前面的数和c比较,若比c大,则后移,直到达到0位置或者找到比c小的数,我们再把c插...原创 2018-12-07 01:00:32 · 322 阅读 · 0 评论 -
二叉树的三种遍历方式(非递归)
先序遍历分析:采用栈的方式实现。二叉树最左侧的一排是最先需要入栈的,然后先令最左侧的最下面的一个节点出栈,它是第一个被遍历的元素,然后查询它是否存在右子节点,如果存在右子节点,则需要把从右子节点出发的一系列左子树入栈,再用和上述同样的方式操作。关键是把节点存入list的时机,这里是在入栈的时候存,因为优先遍历根节点。代码:public List<Integer> preorde...原创 2019-07-22 19:03:35 · 233 阅读 · 0 评论