- 博客(5)
- 收藏
- 关注
原创 快速幂c++实现
根据公式,有两种实现方式,递归实现和非递归 递归实现 double pow1(double a,int b){ double ans = 1; int c = abs(b); if(c == 0) return 1; if(c == 1) return b > 0 ? b : 1/b; ans = pow(a,c>>1); ans *= ans; if(c &am...
2020-03-26 15:34:58
154
原创 Dijkstra算法实现
目的:求单源最短路径 辅助数组: 1、dist[]:用来记录源点到结点i的最短距离 2、s[]:用来记录结点i是否已经被收录 3、path[]:结点i是从path[i]过来的 算法步骤: 1、初始化: 如果两点之间没有直接路径,graph[i][j] 设置为最大值,否则记录每条边的权值 dist[]:如果有到源点的直接路径,则初始化为路径长度,否则初始化为最大值,表示没直接可达的路径。 s[]:除...
2020-03-14 17:19:38
130
原创 大根堆实现
大根堆是根节点的值都大于子树的值,左右子树又是一个大根堆 实现 头文件,堆结构 #include<iostream> using namespace std; #define MAXVALUE INT_MAX typedef int ElemtType; typedef struct Heap{ ElemtType* heap;//大根堆,顺序存储 int size; /...
2020-03-13 11:44:40
273
原创 小根堆
小根堆的构建可以通过插入构建或调整建堆来完成 头文件,堆结构 #include<iostream> using namespace std; typedef int ELemtType; #define MINVALUE -10000; typedef struct Heap{ ELemtType *arry; int size; int capacity; }*minHea...
2020-03-13 11:40:20
328
1
原创 哈夫曼树实现
利用了优先队列,实现了对哈夫曼树的创建,基于已经建好的哈夫曼树,对其进行编码,解码。 算法步骤: 1、初始化每个叶节点,n个叶节点就初始化为n棵树,构成森林; 2、利用优先队列,每次从森林中pop出两个权重最小的节点,生成新的节点,新节点的权重是它们俩的权重和,把新节点加入到森林里面(优先队列中); 3、重复以上过程n-1次,直到最后队列中只剩下一个节点; 结点结构: typedef struct...
2020-03-12 12:00:51
224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅