数据结构
砺晗
宝剑锋从磨砺出,梅花香自苦寒来
展开
-
算法导论——二维平面上的最邻近点对
一、 算法设计与分析:采用分治算法,算法每一次递归调用的输入为点集的子集P,以及数组X和数组Y,由于点击P按X坐标划分,所以不用单独输入X,采用Point.x即可,对数组X中的点排序,使其x坐标坐标单调递增。类似地,对数组Y中的点排序,使其y坐标单调递增。不能再每次递归调用中都进行排序,采用预排序的策略,对Y数组预排序伪代码如下:Let YL[1...Y.length]an原创 2017-02-19 17:20:10 · 5612 阅读 · 0 评论 -
数据结构回顾——时间复杂度分析
程序运行时间受输入规模函数和输入数据分布等因素影响,通常把程序的运行时间描述成输入规模的函数:T(n),一个算法在特定输入上的运行时间是指执行的基本操作数或步数。原创 2017-10-23 10:21:17 · 686 阅读 · 0 评论 -
算法导论——红黑树插入算法C++实现
红黑树图文详解及其C++语言实现原创 2016-05-07 23:51:16 · 6219 阅读 · 2 评论 -
分支限界法解0-1背包问题
一、 算法设计与分析:(1)假设物品数为n,解空间:{(0,0,…,0),(0,0,…,1),…,(1,1,…,1)},即为子集树,设计树节点结构如下:struct Node { intvalue; //搜索到该节点时的价值 intweight; //搜索到该节点时的总重量 floatbound;原创 2017-02-21 20:42:47 · 22191 阅读 · 1 评论 -
Floyd算法C语言实现
#include #include #include #define NUM 4typedef struct MGraph /* 邻接表存储结构 */{ int edges[NUM][NUM]; int n,e;} MGraph;MGraph *build_mgraph();int main(void){ MGraph *mgraph;原创 2016-06-06 00:05:44 · 2171 阅读 · 0 评论 -
dijkstra算法C语言实现
#include #include #include #define NUM 7typedef struct MGraph /* 邻接表存储结构 */{ int edges[NUM][NUM]; int n,e;} MGraph;MGraph *build_mgraph();void Dijkstra(MGraph *mgraph, int v);voi原创 2016-06-05 11:55:25 · 4933 阅读 · 0 评论 -
Kruskal算法实现
#include #include #include #include #define NUM 6#define MAXSIZE 30using namespace std;//定义并查集树typedef struct UNode{ int data; int rank; int parent;} UNode,UFSTree;//定义邻接矩阵原创 2016-06-02 11:53:38 · 484 阅读 · 0 评论 -
Prim算法C语言实现
#include #include #include #define NUM 6typedef struct Node{ int num; int data;} Node;typedef struct MGraph{ int edges[NUM][NUM]; int n,e;} MGraph;MGraph *build_graph()原创 2016-06-02 00:47:49 · 2435 阅读 · 0 评论 -
图的遍历算法实现DFS,BFS
#include #include #include #define NUM 6typedef struct ArcNode{ int ends; int length; struct ArcNode *nextarc;} ArcNode;typedef struct VNode{ ArcNode *firstarc;} VNode;ty原创 2016-05-31 23:30:55 · 757 阅读 · 0 评论 -
哈夫曼树实现
#include #include #include #include #define LEN 6using namespace std;typedef struct node{ char ch; int key; struct node *left; struct node *right;} node;struct cmp{ bool operator ()原创 2016-05-23 17:23:02 · 323 阅读 · 0 评论 -
二叉排序树C语言实现二
二叉排序树删除节点图文详解及其C语言实现原创 2016-05-07 11:12:22 · 3669 阅读 · 1 评论 -
二叉排序树C语言实现一
二叉排序树插入,删除,查找等各种操作手工模拟并用C语言实现。原创 2016-05-06 16:29:32 · 10014 阅读 · 0 评论 -
回溯法——最佳调度问题
一、题目要求设有n个任务由k个可并行工作的机器来完成,完成任务i需要时间为。试设计一个算法找出完成这n个任务的最佳调度,使完成全部任务的时间最早。二、算法设计与分析:该算法可抽象为子集树回溯算法,针对特定的任务数和机器数定义解空间,对于n个任务和k个机器,解编码:(X1,X2,。。。,Xn),Xi表示给任务i分配的机器编号;解空间:{(X1,X2,。原创 2017-02-20 00:09:11 · 16843 阅读 · 3 评论 -
算法导论——最长公共子序列
一、算法设计与分析:设计LCS-LENGTH算法,概算福接受两个序列X[1..m]、Y[1...n]为输入。它将c[i,j]的值保存在表c[0…m,0…n],并按照行主序计算表项。过程维护一个表b[1…m,1…n],帮助构造最优解。B[i,j]指向的表项对应计算c[i,j]时所选择的子问题最优解。伪代码如下:LCS-LENGTH(X,Y)m=X.length;n=Y.len原创 2017-02-19 17:37:09 · 544 阅读 · 0 评论 -
算法导论——哈夫曼树
一、问题针对大量的数据集,设计算法高效求出部分字符的哈夫曼编码说明:本文为哈夫曼编码的应用,基本哈夫曼编码实现见博客:http://blog.csdn.net/xiaowang627/article/details/51483267二、算法分析用一个map addr存储每个字符以及构造好的哈夫曼树中该字符的地址,任意给出一个字符,检索该map映射可以原创 2017-02-19 17:30:26 · 1015 阅读 · 0 评论 -
算法导论——区间树上的重叠区间查找算法
一、 算法设计与分析:(1) 数据结构设计://区间struct Interval{ int low; int high;};//节点struct Node{ Node(int low,int high){ this->key=low; this->Int.low=low; this原创 2017-02-17 23:46:34 · 2093 阅读 · 0 评论 -
算法导论——快排序算法及优化
一、算法设计与分析: 当输入设计已经几乎有序时,插入排序很快,而快速排序性能却不理想,所以当快速排序划分序列长度小于k时,改用插入排序能提高时间性能。即当序列长度大于等于k时用正常的快速排序,小于k时用插入排序。本实验尝试多个k值,以找出最佳k值,使得程序运行时间最佳。二、算法实现#include #define MAXSIZE 50000#include #inc原创 2017-02-17 23:38:39 · 340 阅读 · 0 评论