如果数组1 = {1,2,3,4,6}
数组2 = {1,2,5,6,7}
然后,array1和array 2的交集是
Array1 ^ array 2 = {1,2,3,4,6} ^ {1,2,5,6,7} = {1,2,6}
一组公共元素称为交集。
交集的逻辑如下-
k=0; for(i=0;i<size1;i++){ for(j=0;j<size2;j++){ if(a[i]==b[j]){ intersection[k]=a[i]; k++; } } }
以下是在两个数组上执行交集运算的C程序-
#include<stdio.h> int removerepeated(int size,int a[]); void sort(int size,int a[]); main(){ int i,size1,size2,size,j=0,k,intersectionsize; printf("Enter size of an array1\n"); scanf("%d",&size1); printf("Enter size of an array2\n"); scanf("%d",&size2); int a[size1],b[size2],uni[size1+size2]; if(size1<size2){ intersectionsize=size1; }else if(size1>size2){ intersectionsize=size2; }else{ intersectionsize=size1; } int intersection[intersectionsize]; printf("Enter numbers for array 1\n"); for(i=0;i<size1;i++){ scanf("%d",&a[i]); } printf("Enter numbers for array 2\n"); for(i=0;i<size2;i++){ scanf("%d",&b[i]); } //交集运算开始 k=0; for(i=0;i<size1;i++){ for(j=0;j<size2;j++){ if(a[i]==b[j]){ intersection[k]=a[i]; k++; } } } //Sorting sort(k,intersection); //Removing size=removerepeated(k,intersection); printf("Array after intersection\n"); if(size>0){ for(i=0;i<size;i++){ printf("%d\n",intersection[i]); } }else{ printf("No intersection\n"); } } int removerepeated(int size,int a[]){ int i,j,k; for(i=0;i<size;i++){ for(j=i+1;j<size;){ if(a[i]==a[j]){ for(k=j;k<size;k++){ a[k]=a[k+1]; } size--; }else{ j++; } } } return(size); } void sort(int size,int a[]){ int i,j,temp; for(i=0;i<size;i++){ for(j=i+1;j<size;j++){ if(a[i]>a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp; } } } }
输出结果
执行以上程序后,将产生以下结果-
Enter size of an array1 5 Enter size of an array2 2 Enter numbers for array 1 4 5 6 7 8 Enter numbers for array 2 4 1 Array after intersection 4
本文向大家介绍C程序对两个数组执行并集运算,包括了C程序对两个数组执行并集运算的使用技巧和注意事项,需要的朋友参考一下 联合是用C编程语言提供的一种特殊数据类型,它允许将不同的数据类型存储在同一内存位置。联合提供了一种将相同内存位置用于多种用途的有效方法。 并集运算 如果数组1 = {1,2,3,4,6} 数组2 = {1,2,5,6,7} 然后,将array1和array 2的并集为 A
我如何找到两个数组共有的值?在这种情况下,应返回和。
我有一个问题,在java中找到两个数组之间的区别,我的例子就像假设我们有两个数组。数组和数组。我想有两个结果第一个结果是一个数组,它从数组“A”中找到丢失的对象,第二个结果是一个数组,它在数组“B”中找到添加的对象。第一个结果应类似于,第二个结果类似于。 感谢您的评论。
我已经读过一些其他的堆栈溢出线程: 在java中求两个多集的交集 我如何获得两个数组之间的交集作为一个新数组? 我试图检查两个数组以及它们的元素数(numElementsInX和numElementsInY),并返回一个包含数组x和y的公共值的新数组。他们的交集。 编辑代码
问题内容: 从这个,我们知道要解决两个排序的数组的交叉方法。那么如何获得多个排序数组的交集呢? 基于两个排序数组的答案,我们可以将其应用于多个数组。这是代码 有更好的解决方法吗? 更新1 从这两个主题1和2看来,这是一种更有效的方法。 更新2 为了提高性能,也许可以使用代替我上面的代码。变量保存所有向量的当前最大值。因此,只需将根值与进行比较,如果它们相同,则可以将此元素放入交集列表。 问题答案:
问题内容: 我有两个排序集,并且想要进行交集,即。 关于效率,是否有比以下更好的方法: 问题答案: 您应该先使用ZCARD检查哪些元素较少,然后克隆并修剪较短的元素。 其次,您将剩下2个剩菜。您可以重复使用同一辅助程序,以加快清除速度。 我还想建议克隆使用DUMP和RESTORE,但是对于排序集的情况,ZUNIONSTORE实际上要快得多。这是一个100万个元素集的时间安排: