算法
中流击水浪遏飞舟
这个作者很懒,什么都没留下…
展开
-
排序算法
最近重新看了一下排序算法,对一些经典排序算法做了代码实现,主要写了直接插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,归并排序几种比较常用的排序算法,并分析了几种算法的排序效率。当排序数据量比较小的时候,几种排序算法消耗的时间都相差不大,但是当数据量较大时,直接插入排序和冒泡排序消耗的时间比快速排序和希尔排序算法消耗的时间要多得多,这时快排和希尔排序的优势就体现出来了,一比较,算法的效率对程...原创 2019-02-27 15:26:48 · 314 阅读 · 0 评论 -
数据结构之树的基本操作(java版本)
本博客来自慕课网《数据结构探险之树篇》,慕课网主讲老师使用C++实现的,这里我将其改为java实现,以下是对代码的几点说明:二叉树:所有节点的度都小于等于2二叉树的遍历:根据访问根的顺序:前序、中序、后序。二叉树数组实现:左孩子下标 = 父节点下标2 + 1;右孩子下标 = 父节点下标2 + 2;父节点下标 = (孩子节点下标 - 1) / 2;测试二叉树的数据如下:一...原创 2019-02-28 12:48:48 · 352 阅读 · 0 评论 -
数据结构之图
该博客来源慕课网“数据结构探险之图篇”,慕课网使用C++语言实现,这里改用Java语言实现,这里采用邻接矩阵来保存图的基本关系,该篇博客实现了图的基本操作,广度优先遍历方法(递归和非递归方式),深度优先遍历,最小生成树算法(普里姆算法,卡鲁斯尔算法),算法在代码中已有详细说明Node.java类为节点类,存储节点的基本信息Edge.java类为边类,在生成最小生成树时使用CMap.ja...原创 2019-02-28 13:02:41 · 178 阅读 · 0 评论 -
最短路径算法
1.最短路径问题介绍:从图中的某个顶点出发到达另外一个顶点所经过边的权重和最小的一条路径,称为最短路径最短路径算法一般有一下三种:迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)SPFA算法这篇博客对Dijkstra算法来做一个详细的介绍。2.Dijkstra算法介绍算法特点:迪杰斯特拉算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路...原创 2019-02-28 13:12:15 · 535 阅读 · 0 评论 -
背包问题 (动态规划算法)
声明:原文出处:https://blog.csdn.net/xp731574722/article/details/707668040-1背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wi,其价值为 vi 。问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大?分析一波,面对每个物品,我们只有选择拿取或者不拿两种选择,不能选择装入某物...转载 2019-03-01 12:42:42 · 3739 阅读 · 1 评论 -
排列JAVA实现
本篇博客解决的是给出m个数的全排列,比如给出字符串abc,该字符串的全排列是abc,acb,bac,bca,cab和cba六个。如何求出几个字符的所有排列呢,我们可以考虑把这个复杂的问题分成小问题,比如我们把一个字符串看成由两部分组成:第一部分分为它的第一个字符,第二部分是后面的所有字符,如下图所示。我们求整个字符串的排列,可以看成两步:首先求所有可能出现在第一个位置的字符,即把第一个字符...原创 2019-03-01 12:46:39 · 303 阅读 · 0 评论 -
排列组合问题Java实现
上一篇博客写了怎样实现一个字符串的全排列,并且也给出了代码,在看这篇博客前先将上一篇博客搞懂,这篇看起来就很简单了。这篇将讲解一个从M个数中选取N(N<=M)个数的排列和组合,这里先说明一下,M个数中选取N个数的组合就是将对应的排列去重(比如ab,ba是两个排列,但是却是一个组合)。上一篇通过分治的方法求得了全排列,非全排列也是通过分治的方法得到,下面一个图是从abcd四个数中选取2个数...原创 2019-03-01 12:52:04 · 1600 阅读 · 0 评论 -
多边形构建三角形
本篇文章将介绍怎样将一个多边形剖分成三角形,写这篇博客的背景是由于我想要利用OpenGL ES绘制面,但是OpenGL ES没有给出由多边形构建面的功能,因此为了绘制面,必须将多边形划分成三角形,以下是过程,由于查询的资料较多,中间出现讲解错误的地方,还请各位指正。1.向量点乘a=(x0,y0),b=(x1,y1)a▪b=x0*x1+y0*y1=abcosθθ为向量a,b的夹角...原创 2019-03-01 13:41:33 · 2170 阅读 · 0 评论