将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表
算法思想:首先,判断两个表(假设为A,B)是否合法,然后分别取A,B表的第一个元素之后作比较,较小者放入新的表C中,向后读取,较大者不动,依次比较;最后,若有表的元素有剩余,将剩余的部分加到新的顺序表后面。
bool Merge(SqList &A,SqList &B,SqList &C){
if(A.Length+B.length>C.length)//AB表总长度大于C表
return false;
int i=0,j=0,k=0;
while(i<A.Length&&j<B.Length){//循环,两两比较,较小者存入C表中
if(A.data[i]<=B.data[i]){
C.data[k++]=A.data[i++];
}
else{
C.data[k++]=B.data[j++];
}
}
//若还有一个没有比较完的表
while(i<A.Length){
C.data[k++]=A.data[i++];
}
while(j<B.Length){
C.data[k++]=B.data[j++];
}
C.length=k;
return true;
}