2011年5月8日
摘要: 并查集 维护一些不相交的集合,它是一个集合的集合。每个元素恰好属于一个集合,好比每条鱼装在一个鱼缸里。每个集合S有一个元素作为\集合代表"rep[S],好比每个鱼缸选出一条"鱼王"。并查集提供三种操作:MakeSet(x):建立一个新集合x。x应该不在现有的任何一个集合中出现。Find(S, x):返回x所在集合的代表元素。Union(x, y):把x所在的集合和y所在的集合合并。森林表示法可以用一棵森林表示并查集,森林里的每棵树表示一个集合,树根就是集合的代表元素。一个集合还可以用很多种树表示,只要树中的结点不变,表示的都是同一个集合。合并操作只需要将一棵树的根 阅读全文
posted @ 2011-05-08 21:13 geeker 阅读(2397) 评论(0) 推荐(2) 编辑
摘要: #include<iostream>using namespace std;const int HEAP_SIZE = 100;void sink(int fa);void swim(int son);int heap[HEAP_SIZE+1];int hs;//以建立最小堆为例/*****************************************************************///删除堆顶元素 ,利用上游函数调整/*删除最小值(deleteMin) 先用最后一个元素代替根由于这一步会导致根的元素比儿子大,因此需要向下调整。向下调整的方法很简单,就是 阅读全文
posted @ 2011-05-08 17:58 geeker 阅读(1524) 评论(2) 推荐(1) 编辑