并集算法

时间:2021-10-03
本文章向大家介绍并集算法,主要包括并集算法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
    int equel;
    int end = L1->length;
    for (int i = 0; i < end;)
    {
        equel = FALSE;
        for (int j = i; j < L2->length; j++)
        {
            if (L1->elem[i] == L2->elem[j])
            {
                int temp = L2->elem[j];
                L2->elem[j] = L1->elem[i];
                L1->elem[i] = temp;
                equel = TRUE;
                break;
            }
        }
        if (equel != TRUE)
        {
            int temp = L1->elem[i];
            L1->elem[i] = L1->elem[--end]; //end变化
            L1->elem[end] = temp;
        }
        else
            i++;
    }
    //end为分割并集的线

上面是顺序表中合并两个顺序表的算法,来源于数组并集算法.

算法流程:

从数组1的尚未比较的元素中拿出第一个元素array1(i),用array1(i)与array2(j)进行比较(其中j>i且j<array2的长度),可能出现下面两种情况,

1.  数组2中找到了一个与array1(i)相等的元素,则将array2(j)与array2(i)进行交换,i加一,进行下次迭代

2.  数组2直到结尾也没找到与array1(i)相等的元素,则将array1(i)与尚未进行比较的最后一个元素array1(k)进行交换,i不加一,进行下次迭代。

end之前的元素全为匹配到的重复元素,end之后的在array1和array2中为不重复元素.

差集:

//输出差集

         cout<<"only in array1"<<endl;

         for(i = end ; i < size1; i++)

         {

                   cout<<array1[i]<<" ";

         }

         cout<<endl;

         cout<<"only in array2"<<endl;

         for(i = end ; i < size2; i++)

         {

                   cout<<array2[i]<<" ";

         }

         cout<<endl;

交集:

//输出交集

         cout<<"elements in array1 and array2"<<endl;

         for(i = 0 ; i <end ; i++)

         {

                   cout<<array1[i]<<" ";

         }

         cout<<endl;

原文地址:https://www.cnblogs.com/ladies/p/15364217.html