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

原创 2007年09月21日 16:41:00

整理自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]);
  }
 }
}

版权声明:本文为博主原创文章,转载请注明出处。

求两个排序数组的交集

题目: 有两个数组a{1,5,8,10,14,15,17,18,20,22,24,25,28}和b{2,4,6,8,10,12}, 如何求出他们之间的交集?要求效率越高越好,数组都是从小到大排序好的...

算法5:求两个已排序数组的交集和并集

问题描述求两个已排序数据的交集和并集,要求时间复杂度为O(m+n).解题思路A数组和B数组,A数组大小为m,B数组大小为n。 1、查找B数组的每个成员是否在A数组中,时间复杂度为O(mn) 2、由...
  • pplin
  • pplin
  • 2017年03月06日 14:47
  • 394

两个排序数组中位数

  • 2015年09月04日 17:05
  • 2KB
  • 下载

两个数组合并排序

  • 2008年08月01日 00:39
  • 428B
  • 下载

合并两个二叉排序树(二叉查找树)到一个数组中

package Training; import java.util.Stack; import Training.BinaryTree.TreeNode; /** * Content:合并两个...

求两个数组的交集

  • 2013年11月24日 21:44
  • 22KB
  • 下载

数组排序中NSSortOptions两个参数详解(NSSortConcurrent、NSSortStable)

我们在进行数组排序的时候,很多时候可以根据参数理解意思,并且给定自己要传递的参数。在OC中数组排序的时候,其它方法都有对应的解释,...

两个有序数组求交集,C++

  • 2010年11月01日 16:18
  • 692B
  • 下载

找出两个数组中相同的元素,不排序直接两次循环取出

import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Test{ /...
  • paul342
  • paul342
  • 2014年06月03日 11:01
  • 2957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何取两个已排序数组的交集?
举报原因:
原因补充:

(最多只允许输入30个字)