本算法中时间主要消耗在for循环上的元素与元素之间的交换该循环的循环次数为 n/ 次所以其时间复杂度为O(n)
【例】有顺序表A和B其元素均按从小到大的升序排列编写一个算法将它们合并成一个顺序表C要求C的元素也是从小到大的升序排列
算法思路依次扫描A和B的元素比较线性表A和B当前元素的值将较小值的元素赋给C如此直到一个线性表扫描完毕然后将未完的那个顺序表中余下部分赋给C即可要求线性表C的容量要大于线性表A和B长度之和
具体算法描述如下
int merge_SeqList (PSeqList A PSeqList B PSeqList *C)
{ /*将两个递增的顺序表合并成一个递增的顺序表*/
/*入口参数指向三个顺序表的指针返回标志表示失败表示成功*/
int ijk;
i=;j=;k=;
*C=Init_SeqList(); /* 建立新表并初始化 */
if(!*C)
{
printf(C表不存在);
return();
}
if (A>length+B>length>=MAXSIZE)
{
printf(C表空间不足);
return();
}
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []