首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

两个有序非重数组,如若查找数组之间的重复元素

2013-07-08 
两个有序非重数组,如果查找数组之间的重复元素一个元素多,一个少,都是整数[解决办法]有序,这点很重要。(假

两个有序非重数组,如果查找数组之间的重复元素
一个元素多,一个少,都是整数
[解决办法]
有序,这点很重要。(假定为升序来说明)
可以放两个指针,分别指向两个数组的头。假设为 *p1 和 *p2吧
1、*p1 == *p2(这里数据类型是整数,可以这么做)时,这两个数重复,输出,并且 p1++, p2++;
2、*p1 < *p2 时,p1++;
3、*p1 > *p2 时,p2++;
重复以上步骤,直到有一个指针指向数组的末端(这里可以加一个足够特别的数在数组末端来表示数组取值结束,比如超出取值范围的数)


static const int END = -100000;
int data1[] = {1, 2, 4, 5, 6, 7, END};
int data2[] = {3, 5, 6, END};
int *p1 = data1;
int *p2 = data2;
while (*p1 != END && *p2 != END)
{
    if (*p1 == *p2)
    {
        cout << *p1 << " == " << *p2 << endl;
        p1++;
        p2++;
    }
    else if (*p1 < *p2)
    {
        p1++;
    }
    else // *p1 > *p2
    {
        p2++;
    }
}

热点排行