并查集详解与例题

超容易理解超详细的并查集详解(一个大佬写的超详细):并查集详解
LeetCode 547 省份数量

class Solution {
    public:
        vector<int> father;
        int find(int x)
        { // 查父节点
            int root = x;
            while (father[root] != -1) {
                root = father[root];
            }
            return root;
        }
        bool isConnect(int x, int y)
        { // 两个节点是否联通
            return find(x) == find(y);
        }
        void merge(int x, int y)
        { // 合并成一个集合
            int root_x = find(x);
            int root_y = find(y);
            if (root_x != root_y) {
                father[root_x] = root_y;
            }
        }
        int findCircleNum(vector<vector<int>> &isConnected)
        {
            int res = isConnected.size();
            for (int i = 0; i < isConnected.size(); i++) {
                father.push_back(-1);
            }
            for (int i = 0; i < isConnected.size(); i++) {
                for (int j = 0; j < isConnected.size(); j++) {
                    if (isConnected[i][j] == 1 && !isConnect(i, j)) {
                        res--;
                        merge(i, j);
                    }
                }
            }
            return res;
        }
    };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SRTF(Shortest Remaining Time First)算法是一种短作业优先的进程调度算法,其规则如下: 1. 当一个进程进入就绪队列时,系统会计算出该进程还需要执行的时间。 2. 在就绪队列中选择剩余时间最短的进程先执行。 3. 如果另一个进程进入就绪队列,其剩余时间比当前正在执行的进程还要短,那么系统会立即切换到该进程执行。 4. 如果有多个进程剩余时间相同,则按照先进先出的原则进行调度。 下面是一个例题: 假设有 4 个进程,它们的到达时间、执行时间和剩余时间如下表所示: | 进程 | 到达时间 | 执行时间 | 剩余时间 | |------|----------|----------|----------| | P1 | 0 | 5 | 2 | | P2 | 1 | 3 | 1 | | P3 | 2 | 4 | 4 | | P4 | 3 | 2 | 2 | 按照 SRTF 算法进行调度,其执行过程如下: 1. 时间片 0,P1 进入就绪队列。 2. 时间片 1,P2 进入就绪队列,P1 剩余时间为 4,P2 剩余时间为 2,执行 P2。 3. 时间片 2,P1 剩余时间为 3,P4 进入就绪队列,P4 剩余时间为 2,执行 P4。 4. 时间片 3,P1 剩余时间为 2,P4 剩余时间为 1,执行 P1。 5. 时间片 4,P3 进入就绪队列,P1 剩余时间为 1,执行 P1。 6. 时间片 5,P3 剩余时间为 3,执行 P3。 7. 时间片 6,P3 剩余时间为 2,执行 P3。 8. 时间片 7,P3 剩余时间为 1,执行 P3。 9. 时间片 8,所有进程执行完毕。 根据上述执行过程,可以发现 SRTF 算法可以有效地缩短进程的等待时间和响应时间,提高系统的吞吐量和响应速度。但是,由于它需要不断地计算进程剩余时间,因此会增加系统的开销。此外,在实际应用中,需要根据实际情况选择合适的进程调度算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值