问题
顺序结构线性表LA与LB的头结点关键字为整数。LA与LB的元素按非递减有序,线性表空间足够大,试编写算法,将LB中的元素合并到LA中,并使新的LA的元素仍保持非递减有序。高效值最大限度地避免移动元素。
分析
高效,从m+n-1的位置开始排元素
代码
void fun(SqList &La, SqList Lb) {
///i为La的长度-1 j为Lb的长度-1 新的La从La.length + Lb.length - 1开始
int i = La.length - 1, j = Lb.length - 1, k = La.length + Lb.length - 1;
while(i>=0 && j>=0) {///循环结束条件
if(La.data[i] >= Lb.data[j]) {
La.data[k] = La.data[i];
k--;
i--;
}else {
La.data[k] = Lb.data[j];
k--;
j--;
}
}
while(j>=0) {///La到头而Lb没有到头
La.data[k] = Lb.data[j];
j--;
k--;
}
}
源代码
http://123.206.59.223:8080/code/code/19.rar