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

原创 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]);
  }
 }
}

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

相关文章推荐

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

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

求两个排序数组的交集

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

两个排序数组中位数

两个数组合并排序

  • 2008-08-01 00:39
  • 428B
  • 下载

两个排序数组合并第k或前k个最小值问题

1.X[1..n] 和 Y[1..n]为两个数组,每个都包含n个已排好序的数。给出一个求数组X和Y中所有2n个元素的中位数的O(lgn)时间的算法 参考 :http://blog.csdn.net/z...

求两个数组的交集

  • 2013-11-24 21:44
  • 22KB
  • 下载

在两个排序数组中找到第k小的数

在两个排序数组中找到第k小的数

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

  • 2010-11-01 16:18
  • 692B
  • 下载

冒泡排序和查找数组中最大的数及查找两个数中最大的数

一 求两个数中最大的数 二  求一个有10个整数的整形数组中的最大的整数,并将这个最大的数移动到数组最后的位置 三 冒泡排序     1 冒泡排序的算法:每次都是数组中相邻的两个数两两比较,每次选出最...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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