#include<stdlib.h>
#include<stdio.h>
int BinarySearchInter(int *a ,int lena,int *b,int lenb,int *Inter)
{
if(lena<1||lenb<1)
return 0;
int k=0;
for(int i=0;i<lena;i++)
{
int begin=0;
int end=lenb-1;
int mid;
while(begin<=end)
{
mid=begin+(end-begin)/2;
if(b[mid]<a[i])
{
begin=mid+1;
}
else if(b[mid]>a[i])
{
end=mid-1;
}
else
{
Inter[k++]=a[i];
break;
}
}
}
return k;
}
int main()
{
int a[]={0,1,1,2,3,4,6,7,9,10};
int b[]={3,4,5};
int Result[10];
int lena=sizeof(a)/sizeof(a[0]);
int lenb=sizeof(b)/sizeof(b[0]);
int Count=BinarySearchInter(b,lenb,a,lena,Result);
for(int i=0;i<Count;i++)
{
printf("%d\t",Result[i]);
}
system("pause");
}
二分查找数组交集初级版
最新推荐文章于 2025-04-01 09:47:31 发布