- 博客(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 104
原创 Dijkstra算法实现
目的:求单源最短路径辅助数组:1、dist[]:用来记录源点到结点i的最短距离2、s[]:用来记录结点i是否已经被收录3、path[]:结点i是从path[i]过来的算法步骤:1、初始化:如果两点之间没有直接路径,graph[i][j] 设置为最大值,否则记录每条边的权值dist[]:如果有到源点的直接路径,则初始化为路径长度,否则初始化为最大值,表示没直接可达的路径。s[]:除...
2020-03-14 17:19:38 95
原创 大根堆实现
大根堆是根节点的值都大于子树的值,左右子树又是一个大根堆实现头文件,堆结构#include<iostream>using namespace std;#define MAXVALUE INT_MAXtypedef int ElemtType;typedef struct Heap{ ElemtType* heap;//大根堆,顺序存储 int size; /...
2020-03-13 11:44:40 224
原创 小根堆
小根堆的构建可以通过插入构建或调整建堆来完成头文件,堆结构#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 256 1
原创 哈夫曼树实现
利用了优先队列,实现了对哈夫曼树的创建,基于已经建好的哈夫曼树,对其进行编码,解码。算法步骤:1、初始化每个叶节点,n个叶节点就初始化为n棵树,构成森林;2、利用优先队列,每次从森林中pop出两个权重最小的节点,生成新的节点,新节点的权重是它们俩的权重和,把新节点加入到森林里面(优先队列中);3、重复以上过程n-1次,直到最后队列中只剩下一个节点;结点结构:typedef struct...
2020-03-12 12:00:51 172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人