C++ 两个数组之间的公共函数?
我想找到两个数组之间的公共元素。我的功能不能正常工作。 数组被排序。 只想将两个排序的数组放入check_common函数中,以显示公共元素。 任何人都可以帮忙修理C++ 两个数组之间的公共函数?,c++,arrays,function,C++,Arrays,Function,我想找到两个数组之间的公共元素。我的功能不能正常工作。 数组被排序。 只想将两个排序的数组放入check_common函数中,以显示公共元素。 任何人都可以帮忙修理 void check_common (int x[], int size1, int y[], int size2) { int temp; cout << " Common elements are:\t" << endl; for ( int i=0; i <= size2;
void check_common (int x[], int size1, int y[], int size2)
{
int temp;
cout << " Common elements are:\t" << endl;
for ( int i=0; i <= size2; i++ )
{
for ( int j=0; j <= size1; j++)
{
if (x[j] == y[j]){
temp = x[j];
cout << temp << "\t";}
}
}
cout << endl;
}
void check\u common(整数x[],整数大小1,整数y[],整数大小2)
{
内部温度;
cout如果两个数组中的项都不是唯一的,则解决方案将失败,因为所有其他元素都会移位
最简单的解决方案是使用O(n)
检查。检查数组1中的每个元素(如果它也存在于数组2中)。因为列表是排序的,所以在O(log(n))
中进行此检查。
因此,整个运行时将是O(nlog(n))
,这是相当不错的。
如果您可以保证每个列表项都是唯一的,那么可以在O(log(n))
中完成它。它看起来像是一个“家庭作业”,所以这里有一些建议
您需要传递两个数组的大小。现在,您的循环是一个永无止境的循环,系统将为您报告错误,或者您的程序将挂起
由于要对两个数组进行排序,因此可以使用两个索引-一个用于x
数组,另一个用于y
数组。将两个指针向前移动,以指向“较小”的值为准。当两个指针都达到数组限制时停止。每次两个指针指向相同的值时,您都会打印出来
假设nx
的大小为x
,如果y
,则ny
的大小为:
ix=0 ;
iy=0 ;
while ( ix < nx && iy < ny )
{
if ( x[ix] == y[iy] )
{
std::cout << x[ix] << "\t" ;
ix++ ;
iy++ ;
}
else if ( x[ix] < y[iy] )
ix++ ;
else
iy++ ;
}
ix=0;
iy=0;
而(ix std::难道我不确定你在问什么。for(inti=0;I)