编写一个将A和B中相同元素组成一个新的从小到大的有序顺序表C的算法,分析算法的时间复杂度

2025-03-07 04:09:46
推荐回答(1个)
回答1:

int MergeList_Sq(SqList La,SqList Lb,SqList &Lc)
{
//非递减顺序表La,Lb合并成非递减顺序表Lc

ElemType *pa,*pb,*pc,*pa_last,*pb_last;

pa=La.elem;
pb=Lb.elem;

Lc.length=Lc.listsize=La.length+Lb.length;
//为Lc分配空间
pc=Lc.elem=(ElemType *)malloc(Lc.listsize*sizeof(ElemType));
if(!Lc.elem) exit(1);

pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;

//合并La和Lb 为Lc
while((pa<=pa_last) && (pb<=pb_last))
{
if (*pa=*pb) *pc++=*pa++;
}
return 1;
}

-----------------------------------------------------------

时间复杂度为O(La.length+Lb.length)