[英]common function between two arrays?
我想找到兩個數組之間的共同元素。 我的功能無法正常工作。 數組已排序。 只是想將兩個排序數組放入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; i++ )
{
for ( int j=0; j <= size1; j++)
{
if (x[j] == y[j]){
temp = x[j];
cout << temp << "\t";}
}
}
cout << endl;
}
如果項目在任何一個數組中都不都是唯一的,那么您的解決方案將失敗,因為所有其他元素都將隨之移動。
幼稚的解決方案是使用O(n)
檢查。 檢查array1中的每個元素是否也存在於array2中。 因為列表已排序,所以此檢查在O(log(n))
。 因此,整個運行時將為O(nlog(n))
,這還可以。 如果可以保證每個列表項都是唯一的,則可以在O(log(n))
。
看起來像是“作業”,所以這里有一些建議。
x
數組,一個用於y
數組。 將兩個指針都向前移動,以指向“較小”的值為准。 當兩者都達到陣列限制時,您將停止。 每當兩個指針都指向相同的值時,就將其打印出來。 像這樣假設的東西nx
是尺寸x
和ny
的大小,如果y
:
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++ ;
}
我要完善此功能,並更改check_common
函數參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.