我有那些交叉/聯合但只是兩個數組的函數。 我也需要改進它們以使用n數組:arr = {{1,2,3},{1,5,6},...,{1,9}}。
數組是排序的,它們的元素在它們之間是唯一的。
實施例(交集):
輸入:{{1,2,3,4},{2,5,4},{4,7,8}}
輸出:{4}交叉點和C中的n數組的聯合
ARR1 [],ARR2 - 陣列
M,N - 陣列的長度 交會功能:
int printIntersection(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
i++;
else if(arr2[j] < arr1[i])
j++;
else /* if arr1[i] == arr2[j] */
{
printf(" %d ", arr2[j++]);
i++;
}
}
}
和聯合功能:
int printUnion(int arr1[], int arr2[], int m, int n)
{
int i = 0, j = 0;
while(i < m && j < n)
{
if(arr1[i] < arr2[j])
printf(" %d ", arr1[i++]);
else if(arr2[j] < arr1[i])
printf(" %d ", arr2[j++]);
else
{
printf(" %d ", arr2[j++]);
i++;
}
}
while(i < m)
printf(" %d ", arr1[i++]);
while(j < n)
printf(" %d ", arr2[j++]);
}
的數目這是否: - http://stackoverflow.com/questions/8890154/looking-for-fast-sorted -integer-array-intersection-union-algorithms-implemented幫助? –
爲什麼不循環使用解決方案-so-far數組和下一個數組調用任何函數的n個數組。 –