当前位置: 首页 > 编程笔记 >

C程序对两个数组执行并集运算

孙财
2023-03-14
本文向大家介绍C程序对两个数组执行并集运算,包括了C程序对两个数组执行并集运算的使用技巧和注意事项,需要的朋友参考一下

联合是用C编程语言提供的一种特殊数据类型,它允许将不同的数据类型存储在同一内存位置。联合提供了一种将相同内存位置用于多种用途的有效html" target="_blank">方法。

并集运算

如果数组1 = {1,2,3,4,6}

    数组2 = {1,2,5,6,7}

然后,将array1和array 2的并集为

Array1 U数组2 = {1,2,3,4,6} U {1,2,5,6,7}

                              = {1,2,3,4,5,6,7}

没有重复的所有元素的集合称为并集。

并集运算的逻辑如下-

for(i=0;i<size1;i++){
   uni[j]=a[i];
   j++;
}
for(i=0;i<size2;i++){
   uni[j]=b[i];
   j++;
}

删除重复元素的逻辑如下-

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);
}

程序

下面是在两个数组上执行并集操作的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;
   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];
   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]);
   }
   //并集开始
   for(i=0;i<size1;i++){
      uni[j]=a[i];
      j++;
   }
   for(i=0;i<size2;i++){
      uni[j]=b[i];
      j++;
   }
   //Sorting
   sort(size1+size2,uni);
   //删除重复的元素
   size=removerepeated(size1+size2,uni);
   printf("Array afetr Union \n");
   for(i=0;i<size;i++){
      printf("%d\n",uni[i]);
   }
   //Sorting
}
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
4
Enter size of an array2
3
Enter numbers for array 1
1
2
3
4
Enter numbers for array 2
3
5
6
Array after Union
1
2
3
4
5
6
 类似资料:
  • 本文向大家介绍C程序在两个数组上执行交集运算,包括了C程序在两个数组上执行交集运算的使用技巧和注意事项,需要的朋友参考一下 交集运算 如果数组1 = {1,2,3,4,6}   数组2 = {1,2,5,6,7} 然后,array1和array 2的交集是 一组公共元素称为交集。 交集的逻辑如下- 程序 以下是在两个数组上执行交集运算的C程序- 输出结果 执行以上程序后,将产生以下结果-

  • 我正在尝试并行运行两个exe程序。我想启动它们,等待它们完成后再继续。以下是一个例子: 第一个进程睡眠5秒,第二个进程睡眠10秒。我希望看到进程启动的两条消息和“等待任务”消息。10秒后,请参见“过程完成”。但是,我立即看到“Procs complete”。 任务管理器显示正在运行的进程,同时显示“进程完成”。 那么,我如何从一个程序中启动两个独立的可执行程序,并行运行它们,然后等待它们完成,然后

  • 本文向大家介绍C++实现两个有序数组的合并,包括了C++实现两个有序数组的合并的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++实现两个有序数组合并的具体代码,供大家参考,具体内容如下 剑指offer面试题5延展题: 问题:有两个排序的数组A1和A2,内存在A1的末尾有足够多的空间容纳A2。请实现一个函数,把A2中所有数字插入A1中,并且所有的数字是排序(默认升序)的。 思路:在

  • 我有两个数组列表ar1和ar2。 ArrayList ar1包含一个对象列表,每个对象都具有属性ID、名称和状态<代码>数组列表ar2包含一个对象列表,每个对象都具有属性ID、名称和主题。ar1和ar2的大小相同。 有什么方法可以将这两个列表合并到一个新的列表ar3中,其中包含一个对象列表,每个对象都具有属性ID、名称、状态和主题? 更新:两个列表中的ID和名称相同。

  • 问题内容: 给定两个排序数组,如下所示: 我希望输出为: 要么: 我知道我可以执行以下操作: 我只是想知道是否有一种更快的方法,因为我要处理的数组具有数百万个元素。 任何想法都欢迎。谢谢 问题答案: 由于您使用numpy,因此我怀疑bisec根本不会对您有所帮助。因此,我建议您做两件事: 千万 不能 使用,使用方法,而不是这种种取代阵列,避免了复制。 必须使用没有到位的。因此,不要手动使用逻辑。I

  • 我试图使用流重构一些不那么优雅的代码。我有一个包含字符串和MyObject的HashMap,目前正在使用for循环对其进行迭代,如下所示: 因为我只关心id,所以我首先使用map操作只获取id,然后使用filter操作来消除空的id。 下一部分是我遇到的问题。我尝试的第一件事是使用Collectors groupingBy操作,这样我可以根据id的第一个字符对项目进行分组,结果是: 此链接有助于使