系列目录:
左右移动(旋转)数组元素
查找两个升序数组的中间数
判断数组的某一个元素的数量是否超过了整个数组数量的一半
文图介绍
将有序数组A和有序数组B合并得有序数组C
一、实现算法思想:
首先,按顺序不断取下两个数组元素的较小值存入新的数组中。然后哪个数组的元素有剩余的,直接添加到新数组的后面,过程描述如下:
A和B较小元素为1,则1存入新表。
A和B较小元素均为2,随便哪一个存入新表。
以此类推……一直到:
A和B较小元素为5,这里如果存A,此时A已读取完
B还有5和6,则直接放入新表的后面即可
完成合并!!!
提示:自己动手画图后思路更加清晰 !
二、实现代码
bool Del_s_t(SqList A, SqList2 B, SqList3& C) {
if (A.length + B.length > C.maxSize)//不能大于顺序表最大长度
{
return false;
}
int i = 0, j = 0, k = 0;
while (i < A.length && j < B.length)//两两比较,较小值存入新表
{
if (A.data[i] <= B.data[j])
{
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 = A.length + B.length;
return true;
}
三、运行结果
自己敲!!!
四、总结
以上就是本章要讲的内容,本文简单介绍两个有序数组的合并,提供了能使我们快速便捷地思路和方法。