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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP