小风禁止乱用 已知顺序表L1和L2都按从小到大排列那么我应该如何合并它们到L3并使L3从小到大排列?
可以采用归并排序的思想,即分别从L1和L2的第一个元素开始比较,将较小的元素插入到L3中,然后将指针向后移动一位,继续比较,直到其中一个表的元素全部插入到L3中。最后将另一个表剩余的元素依次插入到L3中即可。具体实现可以参考以下代码:
void merge(SeqList L1, SeqList L2, SeqList &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/ZuY 著作权归作者所有。请勿转载和采集!