/*----------------------------------------------------------------------
【程序设计】
------------------------------------------------------------------------
请编写C 代码,完成计算数组 A 与数组 B 的对称差集(即只属于 A 或者只属
于 B 的元素)。提示:可以先将数组 A 和 B 变为递增排序,然后可以使用双指
针法来高效地找到它们的对称差集。
示例1
【请输入数组 A 的大小: 】5
【请输入数组 A 的 5 个元素: 】6 5 4 3 2
【请输入数组 B 的大小: 】4
【请输入数组 B 的 4 个元素: 】7 6 3 8
【数组 A 与数组 B 的对称差集为: 】2 4 5 7 8
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main 或其它函数中给出的内容,仅
在
Program-End 之间填入若干语句。
不要删除标志否则不得分。
不要修改或删除Program-End 之外的内容否则不得分。
----------------------------------------------------------------------*/
#include <stdio.h>
void bubbleSort(int arr[], int size)
{
    int i, j;
    for (i = 0; i < size - 1; i++)
    {
        for (j = 0; j < size - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                // 交换 arr[j] 和 arr[j + 1]
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int computeSymmetricDifference(int A[], int sizeA, int B[], int sizeB, int C[])
{
    int i = 0, j = 0, k = 0;
    /**********Program**********/
	while(i<sizeA){
		j=0;
		while(j<sizeB){
			if(A[i]==B[j]){
				break;
			}
			j++;
		}
		if(j==sizeB){
			C[k++]=A[i];
		}
		i++;
	}
	j=i=0;
	while(j<sizeB){
		i=0;
		while(i<sizeA){
			if(A[i]==B[j]){
				break;
			}
			i++; 
		}
		if(i==sizeA){
			C[k++]=B[j];
		}
		j++;
	}
	bubbleSort(C,k);
	return k;
    /********** End **********/
}
int main()
{
    int sizeA, sizeB;
    int i;
    printf("【请输入数组 A 的大小: 】");
    scanf("%d", &sizeA);
    int A[100];
    printf("【请输入数组 A 的 %d 个元素: 】", sizeA);
    for (i = 0; i < sizeA; i++)
    {
        scanf("%d", &A[i]);
    }
    printf("【请输入数组 B 的大小: 】");
    scanf("%d", &sizeB);
    int B[100];
    printf("【请输入数组 B 的 %d 个元素: 】", sizeB);
    for (i = 0; i < sizeB; i++)
    {
        scanf("%d", &B[i]);
    }
    int C[200]; // 假设结果数组最大长度为 200,为 A 和 B 长度之和
    int diffSize = computeSymmetricDifference(A, sizeA, B, sizeB, C);
    printf("【数组 A 与数组 B 的对称差集为: 】");
    for (i = 0; i < diffSize; i++)
    {
        printf("%d ", C[i]);
    }
    printf("\n");
    return 0;
}