C程序在两个数组上执行交集运算

交集运算

如果数组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程序在两个数组上执行交集运算 的全部内容, 来源链接: utcz.com/z/341468.html

回到顶部