参考:Robert Sedgewick,《算法:C语言实现》第1章
1、快速查找算法
void quickFind()
{
int i, p, q, id[N];
for (i = 0; i < N; i++)
id[i] = i;
while (cin >> p >> q)
{
if (id[p] == id[q])
continue;
for (i = 0; i < N; i++)
if (id[i] == id[p])
id[i] = id[q];
printInfo(id);
}
}
2、快速合并算法
void quickUnion()
{
int i, j, p, q, id[N];
for (i = 0; i < N; i++)
id[i] = i;
while (cin >> p >> q)
{
for (i = p; i != id[i]; i = id[i]);
for (j = q; j != id[j]; j = id[j]);
if (i == j)
continue;
id[i] = j;
}
}
3、加权快速合并算法
void widthedQickUnion()
{
int i, j, p, q, id[N], sz[N];
for (i = 0; i < N; i++)
{
id[i] = i;
sz[i] = 1;
}
while (cin >> p