美文网首页
10-3 有序组合合并

10-3 有序组合合并

作者: Rumbles | 来源:发表于2019-04-14 22:23 被阅读0次

有序数组的合并. 保证合并之后仍然是有序的

一个指针指向第一个数组
另一个指针指向第二个数组。依次对比 然后小的放到前面 移动完成之后 将剩余的全部放到后面

代码
void mergeList(int a[], int aLen, int b[], int bLen, int result[])
{
    int p = 0; // 遍历数组a的指针
    int q = 0; // 遍历数组b的指针
    int i = 0; // 记录当前存储位置
    
    // 任一数组没有到达边界则进行遍历
    while (p < aLen && q < bLen) {
        // 如果a数组对应位置的值小于b数组对应位置的值
        if (a[p] <= b[q]) {
            // 存储a数组的值
            result[i] = a[p];
            // 移动a数组的遍历指针
            p++;
        }
        else{
            // 存储b数组的值
            result[i] = b[q];
            // 移动b数组的遍历指针
            q++;
        }
        // 指向合并结果的下一个存储位置
        i++;
    }
    
    // 如果a数组有剩余
    while (p < aLen) {
        // 将a数组剩余部分拼接到合并结果的后面
        result[i] = a[p++];
        i++;
    }
    
    // 如果b数组有剩余
    while (q < bLen) {
        // 将b数组剩余部分拼接到合并结果的后面
        result[i] = b[q++];
        i++;
    }
}

相关文章

网友评论

      本文标题:10-3 有序组合合并

      本文链接:https://www.haomeiwen.com/subject/evjewqtx.html