有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。
算法思路:依次扫描通过A和B的元素,比较当前的元素的值,将较小值的元素赋给C,如此直到一个线性表扫描完毕,然后将未完的那个顺序表中余下部分赋给C即可。C的容量要能够容纳A、B两个线性表相加的长度。
核心算法描述如下:
void SeqList_Merge(SeqList A, SeqList B, SeqList C)
{
int i, j, k;
i=0; j=0; k=0;
while ( i<=A.last && j<=B.last )
if (A.date[i]<B.date[j])
C.data[k++]=A.data[i++];
else C.data[k++]=B.data[j++];
while (i<=A.last ) C.data[k++]= A.data[i++];
while (j<=B.last )C.data[k++]=B.data[j++];
C.last=k-1;
}
要求如下:
必须在所讲的“SeqList”类中实现(在原有类的基础上,添加其他算法及main方法);
写出每个算法的算法思想;
必须在所讲的“SeqList”类中实现(在原有类的基础上,添加其他算法及main方法);
写出每个算法的算法思想;
不是用数组编写,使用线性表排列。