关闭

如何取两个已排序数组的交集?

627人阅读 评论(0) 收藏 举报

整理自csdn上的一个帖子.

1,3,5,6,7,9
2,4,6,7,8,9
如何能够最快的取出交集.

思路:因为是排好序了,可以同时搜索.此法还是用了循环逐个比较,所以不一定是最快的.

程序:

#include <stdio.h>
void main()
{
 int a[] = {1,3,5,6,7,9};
 int b[] = {2,4,6,7,8,9};
 int c[6]={0};
 int s=0,n=0;
 for (int i=0, j=0; i<sizeof(a)/sizeof(a[0]) && j<sizeof(b)/sizeof(b[0]); )
 {
  if (a[i]==b[j])
  {
   c[n++]=a[i];
   s++;
   i++;
   j++;
  }
  else if (a[i] > b[j])
  {
   j++;
  }
  else
  {
   i++;
  }
 }
 if (s==0)
 {
  printf("no intersection");
 }
 else
 {
  for (int k=0;k<s;k++)
  {
   printf("%d ",c[k]);
  }
 }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:67492次
    • 积分:956
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:4篇
    • 译文:0篇
    • 评论:16条
    最新评论