自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Makefile基础

Makefile规则Target:Prerequisites commandTarget:规则的目标。通常是最后需要生成的文件名或者为了实现这个目标必须的中间过程文件名。可以是.o文件、也可以是最后的可执行程序的文件名等。另外,目标也可以是make执行的动作的名称,如目标“clean”。 Prerequisites: 规则的依赖。生成规则目标所需要的文件名列表。通常一个目标依赖于一个或者多

2017-03-20 22:06:17 106

原创 具有负边的图最短路径算法

不带赋权的图最短路径算法参考前面的最短路径算法-广度优先搜索 带赋权但不含负边的图最短路径算法参考迪克斯特拉算法 这里考虑带赋权且具有负边的最短路径(但不考虑负值圈)。由于存在负值边,因此可能存在路径v->u->s路径长小于v->s,因此迪克斯特拉算法不再成立。这里我们需要做个改变,首先将起始节点放入一个列表,取出一个节点v1,对于v1的某个邻接节点v2,记起始节点到v2的距离目前为d2,起始节

2017-01-19 13:49:30 550

原创 迪克斯特拉算法(Dijkstra)

无权图的最短路径问题可以用简单的广度优先算法求解,当对路径赋权后,问题就变得复杂了。 此时可用迪克斯特拉算法求解,该算法为一个贪婪算法。 该算法类似无权最短路径,按节点处理。在每个阶段的节点选取上体现贪婪算法,即每次都选取临时路径长最短的节点,并标记为known。容易证明被标记为known的节点均已得到从起始节点到该节点的最短路径长,因此被标记为known的节点在后续阶段中路径信息将不再更新。代

2017-01-18 22:00:44 612

原创 最短路径算法-广度优先搜索

考虑如下图: 当路径没有权重时,从v1到v7的最短路径代码如下:#include<iostream>using namespace std;int main() { int input[8][8] = { {0,0,0,0,0,0,0,0}, {0,0,1,0,1,0,0,0}, {0,0,0,0,1,1,0,0},

2017-01-18 20:37:22 202

原创 图论定义

一个图G由顶点V和边E组成,每一条边就是个点对(v,w),有时也把边称作弧(arc)。如果点对是有序的,则图就叫做有向图。当E中存在(v,w)时,我们称顶点v和顶点w是邻接的。在无向图中如果v和w是邻接的,则w和v也是邻接的。有时候边还具有第三种成分,叫做权(weight)。 从一个顶点到它自身可以看成是一条路径,称为环(loop)。 如果一条路径上所有顶点都是互异的,我们称之为简单路径,但第一

2017-01-18 15:04:48 260

原创 桶排序(bucket sort)

任何使用比较的排序算法时间复杂度通常为O(N log N),但是在某些特殊情况下,以线性时间进行排序还是有可能的。 桶排序假设输入的数据均为小于M的正整数,然后声明一个大小为M的数组L,数组值均初始化为0,读取输入数据i,并执行L[i]++,则L数组中不为0的元素值的下标序列就是排序后的序列。 实现代码如下:#include<iostream>using namespace std;void B

2017-01-18 12:11:07 99

原创 快速排序(Quick Sort)

正如名字一样,快速排序是实践中最快的排序算法,平均运行时间为O(N log N)。最坏情形为O(N^2),但最坏情况很容易规避。 排序步骤如下: 1. 如果集合S中只有0个或1个元素,则返回。 2. 取S中任一元素p,称为轴(pivot)。 3. 将S - {p} 这个集合分成两个子集合,集合S1中的元素小于v,集合S2中的元素大于v。 4. 继续对子集合S1和S2进行如上3个步骤。由以上

2017-01-18 11:10:50 265

原创 希尔排序(shell sort)

希尔排序是以发明者Donald Shell来命名的。它通过比较相距一定间隔的元素并对其排序来工作。各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。初始: 9 8 7 6 5 4 3 2 以4为距离进行sort: 5 4 3 2 9 8 7 6 以2为距离进行sort

2017-01-17 20:38:55 94

原创 插入排序(insertion sort)

插入排序可以说是最简单的排序算法了。 插入排序对数组或子数组做了N - 1次排序,因此时间复杂度为O(N*N)。 对于P = 1次到P= N - 1次,插入排序保证数组位置0到位置P上的元素都为已排序状态。 实现代码如下:#include<iostream>using namespace std;void InsertionSort(int input[], int n);int main()

2017-01-17 20:22:49 152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除