- 论坛徽章:
- 4
|
[quote]原帖由 [i]ychang0918[/i] 于 2008-9-1 16:22 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=9179439&ptid=1258770][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
排序不是问题。ls能讲讲如何实现吗? [/quote]
如果a[n]和b[m]是升序排列的,算法如下:
int i;
int k;
int dis;
//先找相减小于0的匹配项
i = 0;
k = 0;
while (i < n && k < m)
{
dis = a[i] - b[k];
if (dis >= 0)
{
k++;
continue;
}
if (dis > -1 * min)
{
k++;
}
else if (dis > -1 * max)
{
printf("%d, %d\n", a[i], b[k]);
k++;
}
else
{
i++;
}
}
//再找相减大于0的匹配项,和上面的算法类似
i = 0;
k = 0;
while (i < n && k < m)
{
dis = a[i] - b[k];
if (dis <= 0)
{
i++;
continue;
}
if (dis < min)
{
i++;
}
else if (dis < max)
{
printf("%d, %d\n", a[i], b[k]);
i++;
}
else
{
k++;
}
} |
|