算法:并查集的实现及简单优化
2017-07-21 01:46
260 查看
参考的《挑战程序设计竞赛》一书中的并查集的实现。
(另外,阿克曼(Ackermann)函数是什么鬼???)
(另外,阿克曼(Ackermann)函数是什么鬼???)
int parent[MAX_N]; int height[MAX_N]; void init(int n){ for(int i=0;i<n;i++){ parent[i]=i; height[i]=0; } } int find(int x){ if(parent[x]==x){ return x; } else{ return parent[x]=find(parent[x]); } } //非递归的并查集查找 //int find(int x){ // int root=x,tmp; // while(parent[root]!=root){ // root=parent[root]; // } // while(parent[x]!=root){ // tmp=parent[x]; // parent[x]=root; // x=tmp; // } // return root; //} void unite(int x,int y){ x=find(x); y=find(y); if(x==y) return; if(height[x]<height[y]){ parent[x]=y; } else{ parent[y]=x; if(height[x]==height[y]){ height[x]++; } } } bool same(int x,int y){ return find(x)==find(y); }
相关文章推荐
- SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
- 【项目】优化算法设计(二):程序的简单实现
- K_Means优化算法之Canopy算法----java简单实现
- 并查集(Union—find)算法实现简单的迷宫
- 几个简单的算法实现(冒泡优化)
- 史上最简单!冒泡、选择排序的Python实现及算法优化详解
- 【算法——Python实现】并查集及优化
- 排序:简单排序算法实现:冒泡,选择,插入
- 最长上升子序列、最长下降子序列的DP算法由O(n^2)到O(nlogn)算法实现及其优化
- 简单算法 - 两个队列实现一个栈
- 二两橙子的前端之路--简单算法的实现
- 并查集及其算法实现
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路);Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- LISP 简单的数据库 3.6.2 优化查询算法
- pl/sql 实现归并算法 (合并插入法的优化)
- 简单小结几个常见算法的大体实现思想
- Halcon实现工业图像软件平场的简单算法
- 简单LRU算法实现缓存
- 采用KNN算法实现一个简单的推荐系统
- Trie树实现多模匹配算法的进一步优化