A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。
#include<stdio.h>
#include<stdlib.h>
#define M 6
#define N 5
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int A[M] = { 1,2,9,5,7,0 };
int B[N] = { 2,4,7,0,1 };
int C[M>N?M:N];
/*排序*/
qsort(A, M, sizeof(int), cmp);
qsort(B, N, sizeof(int), cmp);
int i=0, j=0,count=0;
while (i < M &&j < N) {
if (A[i] == B[j]) {
C[count++] = A[i];
i++;
j++;
}
else if (A[i] > B[j]) {
j++;
}
else {
i++;
}
}
for (i = 0; i < count; i++) {
printf("%d ", C[i]);
}
return 0;
}