求集合交、并、差集

目录

 

交集

函数

主函数调用

 

并集

函数

主函数调用

差集

函数

主函数调用

 


交集

  • 函数

    int intersection(int a[], int len1, int b[], int len2, int c[]){
    	quick_sort(a, 0, len1 - 1); // 首先快速排序
    	quick_sort(b, 0, len2 - 1);
    	int i = 0, j = 0, k = 0; // 分别为a b c数组的索引
    	while(i < len1 && j < len2){
    		if(a[i] == b[j]){
    			/*if(k > 0 && c[k - 1] == a[i]){ // 若和前一个元素重复
    				i++;
    				j++;
    				continue;
    			}*/
    			c[k] = a[i];
    			i++;
    			j++;
    			k++;
    		}
    		else if(a[i] < b[j])
    			i++;
    		else
    			j++;
    	}
    	return k; // 即为c数组长度
    }
  • 主函数调用

    //int a[11] = {1, 2, 3, 4, 9, 9, 10, 8, 5, 6, 7};
    //int b[5] = {11, 3, 9, 9, 5}; // 实则不是集合(为普通数组),集合中元素应该不同
    int a[11] = {1, 2, 3, 4, 9, 21, 10, 8, 5, 6, 7};
    int b[5] = {11, 3, 9, 10, 5}; 
    int c[5];
    int lenc = intersection(a, 11, b, 5, c);

并集

  • 函数

    int Union(int a[], int len1, int b[], int len2, int c[]){
    	quick_sort(a, 0, len1 - 1);
    	quick_sort(b, 0, len2 - 1);
    	int i = 0, j = 0, k = 0; // 分别为a b c数组的索引
    	while(i < len1 && j < len2){
    		if(a[i] == b[j])
    			c[k++] = a[i++] = b[j++];
    		else if(a[i] < b[j])
    			c[k++] = a[i++];
    		else
    			c[k++] = b[j++];
    	}
    	while(i < len1)
    		c[k++] = a[i++];
    	while(j < len2)
    		c[k++] = b[j++];
    	return k; // 即为c数组长度
    }
  • 主函数调用

    int a[11] = {1, 2, 3, 4, 9, 21, 10, 8, 5, 6, 7};
    int b[5] = {11, 3, 9, 10, 5};
    int c[16];
    int lenc = Union(a, 11, b, 5, c);

差集

  • 函数

    int DifferenceSet(int a[], int len1, int b[], int len2, int c[]){
    	quick_sort(a, 0, len1 - 1);
    	quick_sort(b, 0, len2 - 1);
    	int i = 0, j = 0, k = 0;
    	while(i < len1 && j < len2){
    		if(a[i] == b[j]){
    			i++;j++;
    		}
    		else if(a[i] < b[j])
    			c[k++] = a[i++];
    		else
    			j++;
    	}
    	while(i < len1)
    		c[k++] = a[i++];
    	return k;
    }
  • 主函数调用

    int a[11] = {1, 2, 3, 4, 9, 21, 10, 8, 5, 6, 7};
    int b[5] = {11, 3, 9, 10, 5};
    int c[11];
    int lenc = DifferenceSet(a, 11, b, 5, c);

 

猜你喜欢

转载自blog.csdn.net/ertcmmy/article/details/84030845