
算法
文章平均质量分 81
Taylar_where
学习,学而时习之,知新,温故而知新
展开
-
归并算法
归并排序归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。递归法(Top-down) 申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 设定两个指针,最初位置分别为两个已经排序序列的起始位置 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重...原创 2018-09-28 10:48:05 · 440 阅读 · 0 评论 -
二分搜索
3.二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。Technique for finding a particular value in a linear array, by ruling out halfof the data at each step.二分查找是也称作折半查找,是一种效率较高的查找,但是,折半查找要求线性表必须采...原创 2019-05-24 09:32:09 · 278 阅读 · 0 评论 -
集束搜索BeamSearch
在开始写关于集束搜索的文章之前,我发现我对很多相关的算法都不是很熟悉,这严重影响到了我对集束搜索的理解,为了能让自己更好的理解集束搜索,我又回顾了一些基础。我的回顾之旅:BFS算法中,我总结了两篇二叉树的BFS搜索和无向图的BFS搜索,在理解BFS搜索算法的过程中又额外涉及到了通过树的中序和先序遍历生成二叉树和存储无向图的邻接矩阵和邻接链表这两个知识点,有兴趣的朋友可以查看我的文集“算法之...原创 2019-05-23 10:30:05 · 1021 阅读 · 0 评论 -
A*搜索算法(Java实现)
引言 1968年,的一篇论文,“P. E. Hart, N. J. Nilsson, and B. Raphael. A formal basis for the heuristic determination of minimum cost paths in graphs. IEEE Trans. Syst. Sci. and Cybernetics, SSC-4(2):100-...原创 2019-05-17 18:39:28 · 3238 阅读 · 0 评论 -
无向图的BFS搜索
关于如何存储无向图的问题,想要详细了解的朋友可以阅读本人的另一篇博文存储无向图的邻接矩阵和邻接链表。想更方便阅读代码的朋友可以点。无向图的BFS遍历,其思想是,从某个点(该点可随机取得)一直把其邻接点走完,然后再将其邻接点的未被遍历的邻接点走完,如此反复直到走完所有结点。类似于树的层序遍历。所以我们需要一个visitd数组来表示当前点有没有被访问过。算法流程:1.访问指定起始点。...原创 2019-05-22 11:10:07 · 1013 阅读 · 0 评论 -
分治思想之大整数相乘
假设数字X,Y均为二进制整数,求解X*Y的值,使用分治的思想:上图显示了递归的公式,但是上述的算法的时间复杂度仍旧是T(n) = 4 * T(n / 2) + θ(n) =O(n^2),这个和通过使用小学数学计算方法的时间复杂度是一样的,这样使用分治的思想并没有改进算法的执行效率,这个时候,我们可以换位思考一下,将公式变形为:XY=AC2^n+[(A-B)(D-C)+AC+BD]...原创 2019-05-16 15:56:58 · 722 阅读 · 0 评论 -
leetcode-62. 不同路径
题目描述:一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2输出...原创 2019-05-21 09:43:16 · 320 阅读 · 0 评论 -
递归之汉诺塔问题
我的个人博客:汉诺塔问题一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。二.抽象为数学问题: 如下图所示,从左到右有A、B、C三根...原创 2019-05-15 18:07:41 · 268 阅读 · 0 评论 -
分而治之—最近点对问题详解
其他平台网址导航:我的简书最近点对问题,即平面上有n个点P1,P2,...,Pn,n>1,Pi的直角坐标为(Xi,Yi),i=1,2,...,n.求距离最近的两个点及他们之间的距离。 对于这个问题,我们如果使用暴力求解的方法的话,n个点之间存在(n-1)*n/2个点对,将全部点对之间的距离计算出来并得到最短的距离,这个暴力算法将花费O(n^2)的时间,这个时间复杂度显然...原创 2019-05-15 17:55:36 · 3140 阅读 · 1 评论 -
二叉树的BFS搜索
广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。 搜索是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。如右图所示的二叉树,A 是第一个访问的,然后顺序是 B、C,然后再是 D、E、F、G。 那么,怎样才能来保证这个访问的顺序呢?...原创 2019-05-19 14:55:54 · 455 阅读 · 0 评论 -
通过树的中序和先序遍历生成二叉树
关于二叉树的概念:百度百科给的定义是:二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。然而,没有足够的信息来区分左结点和右结点。如果不考虑连通性,允许图中有多个连通分量,这样的结构叫做森林。二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:图一(1)...原创 2019-05-19 11:25:42 · 860 阅读 · 0 评论 -
回溯法之数独 详解
我从高中起就很喜欢数独这种娱乐方式,喜欢那种为了解出一个数独的执着,喜欢那份坚持,出于这种心情,我选择用java来实现一个数独从无到有的过程。喜爱玩数独的人应该知道,数独的限制条件很有意思:首先,一个9*9的九宫格被分成了九个区域,如图所示,不同颜色区域划分成不同区域。限制条件1:同一个格子内(色块)不能出现相同的数;限制条件2:同一行内不能出现相同的数字限制条件3:同一列内不能出...原创 2018-11-09 16:24:52 · 1124 阅读 · 0 评论 -
回溯法之八皇后问题 详解
关于八皇后的介绍我就不再这里多啰嗦了,大家可以自行百度。现在,我来说明一下八皇后的限制条件:1.在同一行内,皇后不能出现两次;2.在同一列内,皇后不能出现两次;3.在同一条对角线内,皇后不能出现出现两次。问题是:找出一个位置使得八皇后同时存放在棋盘上且互相不能进行攻击?根据回溯的思想,我们可以从第一行开始查找位置,遍历第一行,判断是否存在可以放置的位置,如果有,就将皇后放置...原创 2018-11-09 15:46:20 · 658 阅读 · 0 评论 -
算法设计之贪心法
问题建模与描述: 我们先来看一个简单的例子:调度问题,有n项任务,每项任务的加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间。求:总完成时间(所有任务完成时间之和)最短的安排方案。实例:任务集S={1,2,3,4,5},加工时间t1=3,t2=8,t3=5,t4=10,t5=15算法:按加工时间将上述任务从小到大排序, 解:1...原创 2018-11-03 08:27:22 · 580 阅读 · 0 评论 -
贪心算法
问题建模与描述: 我们先来看一个简单的例子:调度问题,有n项任务,每项任务的加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间。求:总完成时间(所有任务完成时间之和)最短的安排方案。实例:任务集S={1,2,3,4,5},加工时间t1=3,t2=8,t3=5,t4=10,t5=15算法:按加工时间将上述任务从小到大排序, 解:1...原创 2018-10-13 15:29:55 · 1348 阅读 · 0 评论 -
leetcode-95 不同的二叉搜索树 II
给定一个整数 n,生成所有由 1 ...n 为节点所组成的二叉搜索树。示例:输入: 3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 ...原创 2019-06-13 22:56:03 · 346 阅读 · 0 评论