
算法
文章平均质量分 87
不仅仅是寻找
寻找机会
展开
-
查找
一.静态查找顺序表:从表的一端开始,顺序扫描线性表,依次将扫描到的结点关键宇和给定值K相比较。若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。算法简单,且对表的结构无任何要求,无论是用向量还是用链表来存放结点,也无论结点之间是否按关键字有序,它都同样适用。查找效率低,因此,当n较大时不宜采用顺序查找。#includeint Search_s原创 2013-04-22 00:43:04 · 540 阅读 · 0 评论 -
Dijkstra算法
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。 Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。其基本思想是,设置顶点集原创 2013-05-20 16:45:20 · 3602 阅读 · 0 评论 -
Bellman-Ford算法
Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Richard Bellman, 动态规划的提出者)和小莱斯特•福特(Lester Ford)发明。Bel原创 2013-05-20 17:37:54 · 938 阅读 · 0 评论 -
Floyd-Warshall
Floyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3)。 使用条件&范围通常可以在任何图中使用,包括有向图、带负权边的图。 Floyd-Warshall 算法用来找出每对点之间的最短距离。它需要用邻接矩阵来储存边,这个算法通过考虑最佳子路径来得到最佳路径。 1.注意单独一条边的路径也不一定是最佳路径。2.从任意一原创 2013-05-20 17:57:30 · 795 阅读 · 0 评论 -
RMQ和LCA
RMQ和LCA【内容简介】 讨论解决RMQ、LCA问题的算法、以及RMQ、LCA两类问题的相互转换。它们在字符串处理和生物学计算中有着广泛应用,在信息学奥赛中更是被广泛应用和扩展,所以熟练掌握RMQ和LCA问题就显得十分重要。※在内容开始,我们假设一个算法预处理时间为 f(n),查询时间为g(n)。这个算法复杂度的标记为(或f(n)-g(n))。【关键词】RMQ、LCA、ST原创 2013-05-07 00:14:18 · 1128 阅读 · 0 评论 -
并查集
并查集是一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x)把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它本身,每一个元素的祖先节点也是它本身(原创 2013-05-06 15:52:52 · 560 阅读 · 0 评论 -
筛选法求质数
#include#include#include#define m 10000001int main(){ clock_t start, finish; int i,j,p[m],count; start=clock(); for(i=0;i<m;i++) p[i]=1; for(i=2;i*i<m;i++) if(p[i]) { for(j=i+i;j<m;原创 2013-07-11 14:06:34 · 1239 阅读 · 0 评论 -
内部排序
一:插入排序1.直接插入排序:默认前面1,2……N个元素师排好序的。#include#include#includetypedef int ElemType;void InsertSort(ElemType a[],int n){ ElemType x; int i,j; for(i=1;i<n;i++) { x=a[i]; for(j=i-1;j>=0;原创 2013-04-21 01:15:01 · 662 阅读 · 0 评论