顺序合并

顺序合并

有两个顺序表LA和LB,其元素均为非递减有序排列,编写一个算法,将它们合并成一个顺序表LC,要求LC也是非递减有序排列。

算法思想:设表LC是一个空表,为使LC也是非递减有序排列,可设两个指针i、j分别指向表LA和LB中的元LA.elem[i]>LB.elem[j],则当前先将LB.elem[j]插入到表LC中,若LA.elem[i]sLB.elem[j],当前先将LA.elem[i]插入到表LC中,如此进行下去,直到其中一个表被扫描完毕,然后再将未扫描完的表中剩余的所有元素放到表LC中。

void merge(SeqList*LA,SeqList*LB,SeqList*LC)
{
    i=1;j=1;k=1;
    while(i<=LA->length&&j<=LB->length)
        if(LA->elem[i]<=LB->elem[j])
    {
        LC->elem[k++]=LA->elem[i++];
    }
    else
    {
        LC->elem[k++]=LB->elem[j++];
    }
    while(i<=LA->length)
    {
        LC->elem[k++]=LA->elem[i++];
    }
    while(jlength)
    {
        LC->elem[k++]=LB->Elem[j++];
    }
    LC->length=LA->length+LB->length;
}

你可能感兴趣的:(顺序合并)