算法
Ethan_Lei_Pro
Heterogeneous Parallel Computing
展开
-
快速排序(Quicksort)
快速排序原创 2015-09-26 20:02:45 · 567 阅读 · 0 评论 -
质数因子求法
质数因子求法原创 2017-03-22 18:09:47 · 588 阅读 · 0 评论 -
最大流问题-Ford-Fulkerson算法 C++极简实现
Ford-Fulkerson算法 C++极简实现!!!网络最大流问题是网络的另一个基本问题。许多系统包含了流量问题。例如交通系统有车流量,金融系统有现金流,控制系统有信息流等。许多流问题主要是确定这类系统网络所能承受的最大流量以及如何达到这个最大流量。原创 2017-03-13 14:56:19 · 3277 阅读 · 1 评论 -
二分图
给定一个具有n个顶点的图,要给图上每个顶点染色,并且要使相邻的顶点颜色不同,问是否能最多用2种颜色进行染色?思路:选择任意一个顶点出发,依次确定相邻顶点的颜色,就可以判断是否可以被2种颜色染色了。深度优先搜索。int color[MAXVEX] = {0};bool dfs(int v, int c){ color[v] = c; for (int i = 0; i <原创 2017-03-13 19:34:59 · 344 阅读 · 0 评论 -
深度优先搜索与广度优先搜索
C++实现深度优先搜索与广度优先搜索原创 2017-03-14 14:38:03 · 736 阅读 · 0 评论 -
路径还原
对于最短路的问题,很多时候我们只需要求出最短路径就可以了,但是有的时候需求知道所求最短路的路径原创 2017-03-14 15:55:55 · 665 阅读 · 0 评论 -
利用CPU时钟生成伪随机数
利用CPU时钟来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,产生的随机数也不同。原创 2017-03-14 21:12:07 · 1730 阅读 · 0 评论 -
数的全排列
例如有5个数字组成的数列,输出其所有不重复的组合。int a[10] = { 0 };int t[5] = { 11, 12, 13, 14, 15 };int usedx[100] = { 0 };void dfsFun(int n){ if (n == 5) { for (int i = 0; i < 5; ++i) { printf("%d ", a[i]);原创 2017-03-14 21:47:21 · 309 阅读 · 0 评论 -
并查集
并查集的作用体现在刷OJ的时候原创 2017-03-15 15:08:51 · 361 阅读 · 0 评论 -
最小生成树
给定一个无向图,如果它的某个子图中任意两个顶点都互相连通并且是一棵树,那么这课树就是生成树。如果边上有权值,那么使得边权和最小的生成树叫做最小生成树(MST, Minimum Spanning Tree)。(1)Prime算法CODE01void prim(){ int mincost[MAXVEX]; bool used[MAXVEX]; fill(mincost, minc原创 2017-03-15 16:43:45 · 286 阅读 · 0 评论 -
进制转换
输入一个整数,将其转换成八进制数输出原创 2017-03-19 21:53:39 · 379 阅读 · 0 评论 -
std::sort的妙用(1)
有时候需要按照结构体中某项数值进行排序,而结构体中的其他数值则不能改变。例如,按照成绩的高低对学生进行排序,而学生这一结构体中包含了学号,姓名等其他信息。使用std::sort就很方便CODEstruct edge{ int from, to, cost; };bool comp(const edge &e1, const edge &e2){ return e1.cost < e2原创 2017-03-14 22:06:55 · 541 阅读 · 0 评论 -
Kalman滤波的C语言实现
实现了基本的Kalman滤波器,包括1维和2维状态的情况头文件:/* * FileName : kalman_filter.h * Author :Ethan_Lei_Pro * Version : v1.0 * Date : 2017/5/10 10:37:01 * Brief : * * Copyright (C) MICL,USTB */原创 2017-05-10 10:43:05 · 2789 阅读 · 0 评论 -
C++中将字符或整型转换为二进制的类函数
C++中将字符或整型转换为二进制的类函数原创 2017-03-22 10:20:20 · 1626 阅读 · 0 评论 -
最短路径/广度优先
计算距离顶点v的最短路径长度为K的所有顶点,假设图为G。思路:Dijkstra超时了,其实没有必要求出所有的最短路径原创 2017-03-11 20:20:51 · 401 阅读 · 0 评论 -
二叉排序树的实现与输出
输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。原创 2017-03-18 20:01:37 · 698 阅读 · 0 评论 -
牛顿迭代解立方根
计算一个数字的立方根,不使用库函数原创 2015-11-14 12:13:06 · 1037 阅读 · 0 评论 -
递归法输出杨辉三角
int func(int n, int k){ if (k == 1 || k == n ) return 1; if (kn) return 0; else return func(n - 1, k - 1) + func(n - 1, k);}void YHSJ(){ int N = 5; for (int i = 1; i <= 5; ++i){ for (i原创 2015-11-23 11:25:23 · 1523 阅读 · 0 评论 -
算法之插入排序与选择排序
选择排序1,选择待排序数组中的第i个元素2,从它之后,也就是从第i+1个元素到最后一个元素(N)中找到最小的元素,将其与1中选择的元素互换特点:排序过程中,前i个元素是排好序的插入排序1,将待排序数组的第i个元素放入temp2,向左移动一位,如果是比temp大的元素,就替换掉当前的元素特点:排序过程中,前i个元素是排好序的选择排序在i后面的元素中查找,插入排序在i前原创 2015-12-10 09:50:54 · 307 阅读 · 0 评论 -
Java并行编程(parallel programming)
多核处理器已经在计算机上的广泛应用,为了更好的利用多处理器的长处,软件需要运行在并行状态下。JDK7引入了全新的Fork/Join架构用于并行编程,这可以应用于多处理器的机器上以提高程序的效率。Fork/Join架构下图所示:这种架构定义了一个使用ForkJoinTask的类,并且在一个ForkJoinPool的实例中执行任务。ForkJoinTask是一个为执行任务而设计的抽原创 2015-12-17 13:45:20 · 2698 阅读 · 0 评论 -
Java并行编程(parallel programming) 2
另一个并行编程的例子是利用并行编程方法寻找一个大数组中的最大值,为了得到最大值我们需要得到一个最大值的返回值,因此我们定义了一个继承自RecursiveTask任务类,compute需要重写来返回数组中的最大值,如果这是个小数组,那么采用顺序编程的方法是更有效率的,如果这是一个大数组那么就需要将这个数组分成左右两部分,即左右同时分别寻找数组内的最大值,调用函数中的fork()方法使得任务得以执行,原创 2015-12-18 09:30:18 · 655 阅读 · 0 评论 -
图论之向前星
以链表的方式存储图的边。为了方便理解,我通过一个例子说明。假设info[i]为节点的边集所对应的链表的头指针,next[j]为第j条边指向下一条边的指针,to[j]表示第j条边所指向的节点的编号。即:令addr=info[i],之后不断用addr=next[addr]即可得到链表中所有边集的编号,其中to[addr]表示对应边指向的节点编号。注:resize(),设置大小(size);原创 2015-12-07 19:04:17 · 729 阅读 · 0 评论 -
图论之割点和桥
割点:如果在图G中删去一个结点u后,图G的连通分枝数增加,即W(G-u)>W(G),则称结点u为G的割点,又称关节点。桥:如果在图G中删去一条边e后,图G的连通分支数增加,即W(G-e)>W(G),则称边e为G的桥,又称割边或关节边。双连通分支:G中不含割点的极大连通子图称为G的双连通分支,又称为G的块。例子:给定一个无向图,找出图中的割点和桥说明:节点用v表示Vis[v]:记原创 2015-12-08 10:04:34 · 4506 阅读 · 0 评论 -
排序算法汇总
经典的排序算法的汇总原创 2016-03-01 13:09:10 · 334 阅读 · 0 评论 -
广度优先搜索(BFS)
Breadth First Search,BFS,也称为深度优先搜索。 用一个例子来说明什么是BFS。假设一个人出于一个方格迷宫中,为方便,这个人就叫阿宝吧,最开始的时候阿宝站在迷宫(1,1)处,他可以往右或者往下走。BFS的方法大概可以概括为:通过一层层扩展的方法来抵达终点,扩展时每发现一个点就将这个点加入到队列中,直至走到终点为止。最开始阿宝在(1,1)处,一步之内可以到达的点有(1,2)和(原创 2016-03-23 16:38:47 · 510 阅读 · 0 评论 -
广度优先搜索应用一:着色法
在数字图像处理中,可以将一幅图像抽象为一个矩阵,为了方便,在这个例子中只使用0~9这几个数字,进一步抽象,可以把这些数字表示为地图上的海拔高度,0表示海平面,1~9都表示陆地,数字的大小表示海拔的高低。假设初始点在(6,4)处,现在需要计算出该点周围有多少个非0的格子,即该岛的面积。这里把初始点相邻的陆地是为一个岛。 其实就是从(6,4)开始广度优先搜索。每次需要向上下左右四个方向扩展,当扩展出的原创 2016-03-23 16:57:23 · 1160 阅读 · 0 评论 -
深度优先搜索
若存在所有点都未被访问的图,要求访问这图中的所有的点,则可以使用深度优先搜索来解决这一个问题。深度优先搜索可以从图中某个顶点出发,然后再从未被访问的邻接顶点出发遍历全图。理解深度优先搜索的关键在于解决当下该如何做。至于下一步如何做鱼当下如何做的方法是一样的。把每一种可能都去尝试一遍,当前这一步解决后进入下一步,下一步的解决方法和这一步的完全一样,显然这是一个递归的过程。为了在遍历过程中区分点是否已经原创 2016-03-23 18:41:14 · 398 阅读 · 0 评论 -
链表升序
建立一个升序链表并遍历输出原创 2017-03-17 21:12:26 · 1321 阅读 · 0 评论 -
一种非递归实现广度优先搜索(BFS)的方法
一种非递归实现广度优先搜索(BFS)的方法原创 2017-06-28 11:07:20 · 791 阅读 · 0 评论