美文网首页
顺序合并

顺序合并

作者: 这么帅的人啊 | 来源:发表于2018-10-16 20:50 被阅读0次

    顺序合并

    有两个顺序表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(j<LB->length)
        {
            LC->elem[k++]=LB->Elem[j++];
        }
        LC->length=LA->length+LB->length;
    }
    

    相关文章

      网友评论

          本文标题:顺序合并

          本文链接:https://www.haomeiwen.com/subject/wsrkzftx.html