C 語言程式實現兩個陣列的並集運算


並集是一種在 C 程式語言中提供的特殊資料型別,它允許在同一記憶體位置儲存不同的資料型別。並集提供了一種有效的方式來將同一個記憶體位置用於多種用途。

並集運算

如果陣列 1 = { 1,2,3,4,6}

    陣列 2 = {1,2,5,6,7}

那麼,陣列 1 和陣列 2 的並集是

陣列 1 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
");    scanf("%d",&size1);    printf("Enter size of an array2
");    scanf("%d",&size2);    int a[size1],b[size2],uni[size1+size2];    printf("Enter numbers for array 1
");    for(i=0;i<size1;i++){       scanf("%d",&a[i]);    }    printf("Enter numbers for array 2
");    for(i=0;i<size2;i++){       scanf("%d",&b[i]);    }    //union start    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);    //Remove repeated elements    size=removerepeated(size1+size2,uni);    printf("Array afetr Union
");    for(i=0;i<size;i++){       printf("%d
",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

更新時間: 2021年3月26日

13K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.