自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法储备之有向无环图的最短路径问题

对于一般的加权图,Bellman-Ford计算单源点最短路径时间复杂度为O(VE),斐波那契堆优化后的Dijkstrs为O(E+VLogV)如果图可以满足Directed Acyclic Graph(DAG)有向无环图,那么求单源点最短路径问题时间复杂度可以缩减到O(V+E)同样这个方法可以解决多段图问题,多段图属于DAG。初始化dist[]={INF,INF,...} and

2017-10-30 09:09:16 973

原创 算法储备之Floyd Warshall算法

Floyd Warshall算法是动态规划的经典算法该算法可以解决图中每个顶点到其他顶点的距离,图中可以有负权值边,但不能有负循环。时间复杂度为O(V的三次方)算法思想dist[V][V]初始化为二维数组edge[V][V]的内容for循环执行V次,每次以一个顶点为中间顶点,更新所有顶点通过中间顶点到其他顶点的距离for(int k=0;i  for(int i

2017-10-29 21:21:47 508

原创 算法储备之Bellman-Ford算法

Bellman-Ford算法也是求图的单源点最短路径问题。不同于Dijkstra算法的是它能应用于带负权值边的图,并且可以判断图中是否有负循环。该算法的时间复杂度为O(VE) more than Dijkstra算法。V为顶点个数dist[V]数组记录所有顶点到源点的距离执行V-1次循环  每次循环对每一条边执行如下操作    if(dist[v]>dist[u

2017-10-29 21:06:09 392

原创 算法储备之Dijkstra算法的各种优化(堆排序、priority_queue、set 优化)

Dijkstra算法在求最短距离和更新结点距离时的循环遍历可以使用一下三种方式优化:①图的存储方式改为邻接链表,求最短距离采用堆排序的方法,c语言实现②图的存储方式改为邻接链表,求最短距离采用STL中的set,c++实现③图的村粗方式改为邻接链表,求最短距离采用STL中的priority_queue,c++实现堆排序优化:理解的难点在于minHeap中pos的功

2017-10-26 09:23:47 2207

原创 算法储备之Dijkstra算法求单源点最短路径

迪杰斯特拉算法求单元点最短路径,图的存储结构为邻接矩阵 在找最短距离和更新距离时都用for循环遍历结点数 时间复杂度为O(V²)#include #include #include #define V 9int minDistance(int dist[], bool sptSet[]){ int min = INT_MAX, min_index; for

2017-10-26 09:15:02 403

转载 算法储备之希尔排序

希尔排序①:void ShellSort1(int * pArr, int length){ for (int gap = length / 2;gap > 0;gap /= 2) for (int i = 0;i < gap;i++) for (int j = i + gap;j < length;j += gap) if (pArr[j] < pArr[j - gap

2017-10-18 20:25:47 286

原创 算法储备之堆排序

调整堆函数:void HeapAdjust(int * pArr, int parent, int length){ int temp = pArr[parent]; int child = 2 * parent + 1; while (parent < length / 2) { if (child + 1 < length && pArr[child] < pArr[chi

2017-10-18 12:25:24 231

原创 算法储备之快速排序

快速排序的非递归(利用栈):int Sort(int * pArr, int low, int high){ int left = low; int right = high; int key = pArr[low]; while (left < right) { while (left = key) right--; if (left < right) pA

2017-10-17 22:51:01 183

原创 算法储备之归并排序(分治法)

合并函数:void Merge(int * pArr, int low, int mid, int high){ int i = 0; int leftIdx = low; int rightIdx = mid + 1; int * pTemp = new int[high - low + 1]; while (leftIdx <= mid && rightIdx <= high

2017-10-17 10:50:15 339

原创 算法储备之二分检索

非递归:int Binsearch(int * pArr, int low, int high,int key){ int mid = (low + high) / 2; while (low <= high) { if (pArr[mid] > key) high = mid - 1; else if (pArr[mid] < key) low = mid +

2017-10-16 20:25:28 255

原创 数据结构之图的拓扑排序

图的拓扑排序       图的拓扑排序理解起来很简单,一个简单易懂的定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边u,v>,在最后的排序结果中,顶点u总是在顶点v的前面。      介绍图的拓扑排序之前需要介绍偏序和全序的概念,在这里我只说说我的理解。       我们规定有向图入度为零的顶点才可以被访问,则

2016-12-24 16:58:55 976

原创 数据结构之平衡二叉树的非递归实现

平衡二叉树  平衡二叉树因插入和删除时都要从插入和删除的位置向上到根节点判断是否平衡的特点,用递归比较容易实现。利用循环同样可以实现对二叉树的平衡操作只是相应的有些麻烦。

2016-12-05 23:04:30 1590

原创 数据结构之平衡二叉树的递归实现

平衡二叉树  平衡二叉树,相对于二叉查找树多了旋转操作,保证了查找元素时每一次比较都能做到折半。头文件列出了要用到的结构和一些宏#pragma once#include #define NAME_SIZE 20#define BUFFER_SIZE 40typedef struct { TCHAR szHeroName[NAME_SIZE]; i

2016-12-05 22:05:14 586

原创 数据结构之串—关键词索引表

关键词索引  时隔两个月,我又回来写笔记了。  在这期间学习了一点win32 API 以后就尽量对控制台说拜拜了接上课本上的内容,串这章在最后有一个建立关键词索引表的项目整个项目大体上分这样几点:1、从列有书号和书名的文件中将书号和书名提取出来2、提取书名中的关键词3、将关键词插入索引表,将具有相同关键词的书的书号和关键词放在一起比如有这样4

2016-11-15 21:38:47 2475

原创 数据结构之KMP算法解析

KMP算法解析  这个算法对于智商捉急的我,被课本上各种公式和文字说明搞得头晕目眩  不过看懂以后并不觉得复杂,我在这里简单的说一说我的理解,如果还是不明白那就耐心的看书吧,书会把你讲明白的  首先说明一下,很多文章包括书上都把1当作首元素的索引,这一点我很不习惯所以一下所有的说明,都是从0开始索引,代码也是我改编书上的从0开始首先说明大体思路

2016-09-11 20:11:41 673

原创 数据结构之栈与队列数学表达式的求值

数学表达式的计算    课本上使用c去实现个位数字的加减乘除,于是我将它扩展到了浮点数的四则运算  用了逆波兰表达式,具体怎么算还是百度一下吧,我的表达能力肯定不如百度啦  另外我终于去学习了一下搁置已久的正则表达式,这个东西真的很好用,不会的同学去学习一下吧,给俩中文的msdn链接:  https://msdn.microsoft.com/zh-cn/librar

2016-09-09 12:13:37 1978

原创 数据结构之栈迷宫求解

迷宫求解了解下书上的思路,不过那个伪代码写的例子怎么也看不懂。难道是因为我看的是盗版   头文件  #pragma once#include #define STACK_INIT_SIZE 100#define STACK_INCREMENT 50const int Xrange = 12;const int Yrange = 8;

2016-09-03 15:55:33 1875

原创 数据结构之链表一元多项式的计算

#pragma once#include #include //复数的存储结构typedef struct { double coef; int expn;}Item; //结点typedef struct node{ Item

2016-09-02 22:30:54 1680

c语言实现图的拓扑排序

C语言实现图的拓扑排序

2016-12-24

数据结构之平衡二叉树的非递归实现

平衡二叉树的非递归实现

2016-12-06

数据结构之平衡二叉树的递归实现

平衡二叉树各种操作的递归实现

2016-12-05

数据结构之串—关键词搜索

串的更复杂的操作,和文件的第一次打交道,第一个win32程序。

2016-11-15

KMP算法代码

KMP next算法

2016-09-12

KMP算法实现代码

KMP算法,索引值从0开始代码

2016-09-11

c++实现数学表达式的四则运算

c++实现浮点数的四则运算,有兴趣的同学可以多实现几个运算符

2016-09-09

数据结构之栈--迷宫求解

走迷宫

2016-09-03

数据结构之链表--一元多项式的计算

自己写的一元多项式的计算

2016-09-03

空空如也

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

TA关注的人

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