严蔚敏班数据结构算法2.1的完整C语言程序

本人自从学了数据结婚够之后越来越迷糊,总是不知道那些算法加上什么之后才能运行 现在希望大神写出算法2.1的完整可以直接复制粘贴就可运行的程序(线性表La,Lb中的数据元素按值非递减有序排列 La=(3,5,8,11) Lb=(2,6,8,9,11,15,20,) 按从小到达合并成线性表Lc)

第1个回答  2014-10-13

这就是简单的两路归并(merge),要深入学习多百度一下。算法导论有清晰的图解。

归并La,Lb,我自己的代码如下。

void MyMerge(int La[],int len_a,int Lb[],int len_b,int Lc[])
{
    //len_a,len_b是两个数组长度
    int i=0,j=0,k=0;
    while(i<len_a && j<len_b)
    {
        if(La[i]<L[j])  //La中比Lb小,则把La中赋给Lc,然后比较下一个i
        {
            Lc[k]=La[i];
            i++;
            k++;
        }
        else            //La中不比Lb小,则把Lb中赋给Lc,然后比较下一个j
        {
            Lc[k]=Lb[j];
            j++;
            k++;
        }
    }
    if(i<len_a)         //La长度比较长
    {
        while(i<len_a)  //把La中余下的赋给Lc
        {
            Lc[k]=La[i];
            k++;
            i++;
        }
    }
    if(j<len_b)         //Lb长度比较长
    {
        while(j<len_b)  //把Lb中余下的赋给Lc
        {
            Lc[k]=Lb[j];
            k++;
            j++;
        }
    }
}

本回答被网友采纳
相似回答