#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//把数组A,B相同的元素存进数组C
void findComElement(int *A,int *B,int *C,int n1,int n2,int *p)
{
int i = 0 , j = 0 , k = 0;
while (i < n1 && j < n2)
{
if (A[i] < B[j])
i++;
else if (A[i] == B[j])
{
C[k] = A[i];
while (i < n1 && j < n2 && (A[i] == C[k] || B[j] == C[k]))
{
if (A[i] == C[k])
i++;
if (B[j] == C[k])
j++;
}
k++;
}
else
j++;
}
*p = k;
}
int main()
{
int A[20] = { 1,2,3,4,5,6,7,9,9 }; //长度9
int B[20] = { 2,3,5,7,8,9,9,15 }; //长度8
int C[20] = { 2,5,7,8,9,9 };//长度6
int D[20];//记录A,B的公共元素
int E[20];//记录A,B,C公共元素
int k = 0;
findComElement(A , B , D , 9 , 8 , &k);
findComElement(D , C , E , 9 , 8 , &k);
for (int i = 0; i < k; i++)
printf("%d " , E[i]);
return 0;
}
求三个有序数组的公共元素
猜你喜欢
转载自blog.csdn.net/qq_43496435/article/details/113804697
今日推荐
周排行