20-01-2009, 21:18
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
מקוה שזה יעזור איכשהו:
קוד:
void median(int* arr, int arr_size, &result[])
{
if (arr_size & 1) // e-zoogie, a single median exists
{
result[0] = *(arr + arr_size/2 + 1);
result[1] = NULL;
}
else // zoogie, 2 medians
{
result[0] = *(arr + arr_size/2);
result[1] = *(arr + arr_size/2 + 1);
}
}
int main(void)
{
int arr1[...] = {...},
arr2[...] = {...},
res1[2], res2[2];
qsort(arr1);
qsort(arr2);
median(arr1, sizeof arr1, res1);
median(arr2, sizeof arr2, res2);
if (res1[0] == res2[0])
printf("The mutual median is %d.", res1[0]);
elseif (...)
...
return 0;
}
(נשאר כמה תנאים להמשיך)
אם זה לא לפי הסיבוכיות שאתה רוצה, אז כנראה שצריך לאחד את כל החציונים שנמצאו לתוך מערך אחד ולבצע עליו qsort, ואז זה כבר פשוט יותר.
|