已知顺序表L1和L2都按从小到大排列那么我应该如何合并它们到L3并使L3从小到大排列?
可以使用双指针法,分别从L1和L2的头部开始遍历,比较两个指针指向的元素大小,将较小的元素插入到L3中,并将指针向后移动一位。直到有一个顺序表遍历完毕,将另一个顺序表剩余的元素依次插入到L3中即可。
具体实现可以参考下面的代码:
void merge(SqList L1, SqList L2, SqList &L3) {
int i = 0, j = 0, k = 0;
while (i < L1.length && j < L2.length) {
if (L1.data[i] <= L2.data[j]) {
L3.data[k++] = L1.data[i++];
} else {
L3.data[k++] = L2.data[j++];
}
}
while (i < L1.length) {
L3.data[k++] = L1.data[i++];
}
while (j < L2.length) {
L3.data[k++] = L2.data[j++];
}
L3.length = k;
}
原文地址: https://www.cveoy.top/t/topic/ZuK 著作权归作者所有。请勿转载和采集!