- 博客(6)
- 收藏
- 关注
原创 各种Sort(还有堆排序桶排序基排序没写)
void InsertSort(vector<int>& vec) {//stable int sz = vec.size(); for (int wall = 1; wall < sz; ++wall) { for (int index = wall; index > 0 && vec[index] < vec[index - 1]; index--) swap(vec[index], vec[index - 1]); } } v.
2021-12-16 17:05:54
196
原创 最小生成树的实现(prim算法)
【问题描述】 已知含有n个顶点的带权连通无向图,采用邻接矩阵存储,邻接矩阵以三元组的形式给出,只给出不包括主对角线元素在内的下三角形部分的元素,且不包括不相邻的顶点对。求该连通图的最小生成树的权值 【输入形式】 第一行给出结点个数n和三元组的个数count,以下每行给出一个三元组,数之间用空格隔开。(注意这里顶点的序号是从1到n,而不是0到n-1,程序里要小心!) 【输出形式】 最小生成树的权值 思路代码: #include<iostream> #include<fstre...
2021-12-02 20:01:12
165
原创 huffman tree的实现
假设共有n个节点需要编码,即huffman tree中有n个叶子节点。 那么会生成n-1个新的中间节点。 (因为只需记录爸爸,因此用数组比较方便) 思路: ①构建大小为2*n-1的数组,用来存储node. ②每次从集合中选取两个weight最小,并且没有爸爸的节点,将他俩构成一颗新的子树,再把新构成的子树加入到数组中。 ③直到数组被填满,那么最后一个既是根节点。 前提需要: struct huffman { int parent; int weight; huffman(int
2021-12-02 17:04:50
386
原创 拓扑排序(判断有向图中是否有环)
Kahn算法: //n为点的数量,in数组用来记录每个点的入度,edges数组用来记录每个点所指向的所有点 vector<int>in(n); vector<vector<int>>edges; //首先把所有入度为0的点放到que中,再依次把这些点从图中删掉(即把它指向的点的入度减一); //再寻找入度为0的点,重复下去。直到所有的点都被从图中删掉。 bool toposort(int n) { vector<int>ans(n); queue&l.
2021-11-18 16:14:24
1609
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人