并查集

本文介绍了并查集的数据结构,包括其基本组成元素:整数型数组pre[]用于记录每个点的前导点,以及find和join两个核心函数的实现原理与代码示例。通过路径压缩优化查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天讲一下并查集

并查集由一个整数型的数组和两个函数构成。数组pre[]记录了每个点的前导点是什么,函数find是查找,join是合并。


int find(int x)
{
    int r=x;
    while(r!=pre[r])//若r的前导点不是它本身
    {
        r=pre[r];//查找
    }

    //路径压缩
    int i=x,j;
    while(i!=r){
        j=pre[i];
        pre[i]=r;
        i=j;
    }
        return r;//返回查找到的根节点
}
//合并
void join(int x,int y)
{
    int rx=find(x),ry=find(y);
    if(rx!=ry)
    {
        pre[rx]=ry;
    }
}

另外,这篇文章讲的非常好,也很生动,推荐一下
http://blog.youkuaiyun.com/dellaserss/article/details/7724401/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值