标签: quick-union

加权快速联合解释

我需要帮助理解关于加权快速联合的问题给出的解释:

以下哪个id[]数组可能是对一组10项目运行加权快速联合算法的结果?检查所有适用。

回想一下,我们的加权快速联合算法使用按大小(节点数)联合(而不是按高度联合)。

不正确:9 1 7 3 4 9 6 7 8 9
解释:9-5 7-2 5-0

不正确:2 2 2 2 5 1 2 3 1 2
解释:2-9 3-7 9-3 5-4 0-2 1-8 8-4 4-9 8-6

正确:9 9 3 4 9 4 9 9 4 2
说明:id[]数组包含一个循环:2->3->4->9->2

正确:0 2 3 0 0 2 2 9 3 0
解释:以父为2 <根的树的大小是以父为根的树的大小的两倍2

正确:0 4 6 7 4 …

algorithm quick-union

5
推荐指数
1
解决办法
6271
查看次数

Quick Union 的时间复杂度是多少?

我正在学习关于数据结构和算法的课程。作者提到快速查找是 O(N^2),这是有道理的(考虑到 N 个对象上的 N 个联合操作可能需要 N*N 个数组访问)。但是,我不明白为什么 Quick Union 会更好。似乎在最坏的情况下,一棵狭长的树,对 N 个对象进行 N 次 Find 操作也会导致 O(N^2) 但材料说它是 O(N)。

所以,一种是二次时间,一种是线性。我不确定我是否理解为什么会有差异。例子:

快速查找方法

int[] id = new int[10];

for(int i = 0; i < 10; i++)
    id[i] = i;  

// Quick find approach

int QuickFind(int p)
{
    return id[p];
}

public void Union(int p, int q)
{
    int pId = find(p);
    int qId = find(q);

    if (pId == qId)
        return;

    for (int i = 0; i < id.length; i++)
    {
        if(id[i] …
Run Code Online (Sandbox Code Playgroud)

algorithm quick-union

5
推荐指数
2
解决办法
4627
查看次数

标签 统计

algorithm ×2

quick-union ×2