
数据结构
文章平均质量分 91
比启谷
燕山大学计算机学生
展开
-
数据结构之平衡二叉树的递归实现
平衡二叉树 平衡二叉树,相对于二叉查找树多了旋转操作,保证了查找元素时每一次比较都能做到折半。头文件列出了要用到的结构和一些宏#pragma once#include #define NAME_SIZE 20#define BUFFER_SIZE 40typedef struct { TCHAR szHeroName[NAME_SIZE]; i原创 2016-12-05 22:05:14 · 646 阅读 · 0 评论 -
算法储备之Dijkstra算法的各种优化(堆排序、priority_queue、set 优化)
Dijkstra算法在求最短距离和更新结点距离时的循环遍历可以使用一下三种方式优化:①图的存储方式改为邻接链表,求最短距离采用堆排序的方法,c语言实现②图的存储方式改为邻接链表,求最短距离采用STL中的set,c++实现③图的村粗方式改为邻接链表,求最短距离采用STL中的priority_queue,c++实现堆排序优化:理解的难点在于minHeap中pos的功原创 2017-10-26 09:23:47 · 2329 阅读 · 0 评论 -
算法储备之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 · 443 阅读 · 0 评论 -
算法储备之归并排序(分治法)
合并函数: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 · 370 阅读 · 0 评论 -
算法储备之二分检索
非递归: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 · 286 阅读 · 0 评论 -
数据结构之栈迷宫求解
迷宫求解了解下书上的思路,不过那个伪代码写的例子怎么也看不懂。难道是因为我看的是盗版 头文件 #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 · 1949 阅读 · 0 评论 -
数据结构之串—关键词索引表
关键词索引 时隔两个月,我又回来写笔记了。 在这期间学习了一点win32 API 以后就尽量对控制台说拜拜了接上课本上的内容,串这章在最后有一个建立关键词索引表的项目整个项目大体上分这样几点:1、从列有书号和书名的文件中将书号和书名提取出来2、提取书名中的关键词3、将关键词插入索引表,将具有相同关键词的书的书号和关键词放在一起比如有这样4原创 2016-11-15 21:38:47 · 2626 阅读 · 0 评论 -
数据结构之KMP算法解析
KMP算法解析 这个算法对于智商捉急的我,被课本上各种公式和文字说明搞得头晕目眩 不过看懂以后并不觉得复杂,我在这里简单的说一说我的理解,如果还是不明白那就耐心的看书吧,书会把你讲明白的 首先说明一下,很多文章包括书上都把1当作首元素的索引,这一点我很不习惯所以一下所有的说明,都是从0开始索引,代码也是我改编书上的从0开始首先说明大体思路原创 2016-09-11 20:11:41 · 718 阅读 · 0 评论 -
数据结构之栈与队列数学表达式的求值
数学表达式的计算 课本上使用c去实现个位数字的加减乘除,于是我将它扩展到了浮点数的四则运算 用了逆波兰表达式,具体怎么算还是百度一下吧,我的表达能力肯定不如百度啦 另外我终于去学习了一下搁置已久的正则表达式,这个东西真的很好用,不会的同学去学习一下吧,给俩中文的msdn链接: https://msdn.microsoft.com/zh-cn/librar原创 2016-09-09 12:13:37 · 2064 阅读 · 0 评论 -
数据结构之链表一元多项式的计算
#pragma once#include #include //复数的存储结构typedef struct { double coef; int expn;}Item; //结点typedef struct node{ Item原创 2016-09-02 22:30:54 · 1728 阅读 · 0 评论 -
算法储备之有向无环图的最短路径问题
对于一般的加权图,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 · 1032 阅读 · 0 评论 -
算法储备之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 · 425 阅读 · 0 评论 -
算法储备之希尔排序
希尔排序①: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 · 320 阅读 · 0 评论 -
算法储备之堆排序
调整堆函数: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 · 263 阅读 · 0 评论 -
算法储备之快速排序
快速排序的非递归(利用栈):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 · 218 阅读 · 0 评论 -
数据结构之图的拓扑排序
图的拓扑排序 图的拓扑排序理解起来很简单,一个简单易懂的定义:将有向图中的顶点以线性方式进行排序。即对于任何连接自顶点u到顶点v的有向边u,v>,在最后的排序结果中,顶点u总是在顶点v的前面。 介绍图的拓扑排序之前需要介绍偏序和全序的概念,在这里我只说说我的理解。 我们规定有向图入度为零的顶点才可以被访问,则原创 2016-12-24 16:58:55 · 1056 阅读 · 0 评论 -
数据结构之平衡二叉树的非递归实现
平衡二叉树 平衡二叉树因插入和删除时都要从插入和删除的位置向上到根节点判断是否平衡的特点,用递归比较容易实现。利用循环同样可以实现对二叉树的平衡操作只是相应的有些麻烦。原创 2016-12-05 23:04:30 · 1704 阅读 · 0 评论 -
算法储备之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 · 542 阅读 · 0 评论