永发信息网

C或C++ 求两个数组相同元素个数

答案:4  悬赏:80  手机版
解决时间 2021-11-28 15:26
C或C++ 求两个数组相同元素个数
最佳答案
方法一:查找一个数组里面最小和次小的两个元素,可采用先按从小到大排序,然后,取出前两位数,得到最小和次小。但这种方法时间复杂度较高。
方法二:
这种方法,一次遍历数组,就可以得到结果,效率比排序高出很多。
参考代码及运行效果:

全部回答
我也不会做,我觉得用两个for循环,
for(i=0;f[i]!='\0';i++)
for(j=0;f[j]!='\0';j++)
{if(f[i]=f[j])
n++}
思路就这样,自己写吧
用2分查找
nlgn

#include

int BSearch(int a[], int l, int r, int v)
{
if (l <= r)
{
int m = (l + r) / 2;

if (a[m] == v)
{
return m;
}
else if (a[m] < v)
{
BSearch(a, l + 1, r, v);
}
else
{
BSearch(a, l, r - 1, v);
}
}
else
return -1;
}

int main()
{
int f[4]={1,3,4,7}, g[5]={2,3,5,7,8}, int n = 0;
for (int i = 0; i < 5; i++)
{
if (BSearch(f, 0, 4, g[i]) != -1)
{
printf("%d\n", g[i]);
}
}
return 0;
}
#include
int Match2Array(const int * pArray1 , int iSize1 , const int * pArray2 , int iSize2 )
{
const int * piFirEnd = pArray1+iSize1 , *piSecEnd = pArray2+iSize2;
int iRet = 0;

while ( pArray1 < piFirEnd && pArray2 < piSecEnd )
{
if ( *pArray1 == *pArray2)
{
printf("%d ", *pArray1);

pArray1++;
pArray2++;
iRet++;
}
else if ( *pArray1 < *pArray2 )
{
pArray1++;
}
else
{
pArray2++;
}
}

return iRet;
}

#define ARRAYSIZE(array) ( sizeof(array)/sizeof(array[0]) )
int main(void )
{
int f[]={1,3,4,7,9,11,23};
int g[]={2,3,5,7,8,9,10,23};

int i = Match2Array( f , ARRAYSIZE(f) , g ,ARRAYSIZE(g));

getch();

}

时间复杂度o(m+n),m,n分别为两个数组大小.即最大比较次数为两个数组大小之和.

假如当前位置两个相等,则加1,元素互不相同,且有序,则第二个数组中不会再有其他数和第一个数组中当前数相同,故第一个数组当前位置加1,同理,第二个数组当前位置加1.

假如第一个数组元素小于第二个数组元素(*pArray1 < *pArray2 ),数组二中不会再有元素等于*pArray1,但是数组一可能还有元素等于*pArray2 。故pArray1++。

第一个数组元素大于第二个数组元素(*pArray1 < *pArray2 ),同理于第二种情况。

如有疑问,百度hi
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
非洲猎豹比跑车快吗, 猎豹0-100要多久?
我就纳了个闷了 是什么意思?
公而忘私 文言文答案
我缺厂房我有厂房缺项目融资
祝你遇到对的那个人,之前种种狼狈不堪都成了
好看的英文小说txt
中式食物有哪些?
神农溪景点问答,神农溪好玩吗
2017年沧州公租房在哪里
CF手游升级到70级后任务奖励多少钻石
求这个c语言程序设计 很基础的语法就行
自己掏耳朵能掏干净吗
如何认识 面对全体学生 和 学生
骁龙435芯片好吗
吊起重量200kg速度0.2m/s多大功率电机
推荐资讯
想考IFA的芳疗师证,不知道难不难,都考些什
旅行的感觉真好作文四百字
·《水浒传》有关“燕顺”的章回
告诉您如何开好咖啡店之选址
请教瓷瓶底落款“景德镇制”四字、各瓷器行家
别人说过40岁那是高龄了
求希希漫影的邀请码
拿出备胎,奥迪车主却不懂如何更换,这就尴尬
6ag1-214-1ag40-5xb0 怎么组态
我的被子只洗被罩,不洗被子可以吗
前杠喷漆多少钱呢
距离首战雅思还有60天,我该怎么利用碎片时间
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?