美文网首页
C语言算法:有序数组合并-2020-08-21

C语言算法:有序数组合并-2020-08-21

作者: 松哥888 | 来源:发表于2020-08-21 17:32 被阅读0次

方法

  • 就是同时遍历两个数组,通过比大小,组成一个新数组;

  • 数组参数最好带上一个长度参数,防止越界;

代码

// 合并数组;其中a,b都是从小到大有序排列的数组
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++;
    }
}

测试代码

// 有序数组合并
- (IBAction)mergeButtonTouched:(id)sender {
    int a[5] = {1,4,6,7,9};
    int b[8] = {2,3,5,6,8,10,11,12};
    
    //// 用于存储归并结果
    int result[13];
    //// 归并操作
    mergeList(a, 5, b, 8, result);
    //// 打印归并结果
    printf("merge result is:\n ");
    for (int i = 0; i < 13; i++) {
        printf("%d ", result[I]);
    }
}

输出

企业微信截图_d9286d34-1947-40bd-bb21-70f286887b70.png

参考文章

https://www.jianshu.com/p/dff13d9b822d

相关文章

  • C语言算法:有序数组合并-2020-08-21

    方法 就是同时遍历两个数组,通过比大小,组成一个新数组; 数组参数最好带上一个长度参数,防止越界; 代码 测试代码...

  • 对两个有序的数组进行合并

    1、算法描述: 有两个有序的整型数组arrayA,和arrayB,先要将它俩合并得到新的合并数组同样是有序的。示例...

  • js 合并两个有序数组 成一个有序数组

    将两个有序数组合并成一个有序数组,假设两个数组,a和b合并成c. 我的想法是,以b数组作为参照,从下标0 开始 逐...

  • 归并排序

    原理:将原序列划分为有序的n个序列,然后利用归并算法进行合并,合并之后即为有序序列。要点:分治,归并 将数组arr...

  • iOS面试之算法大全

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • iOS面试之算法模块

    算法 算法内容如下: 字符串反转 链表反转 有序数组合并 Hash算法 查找两个子视图的共同父视图 求无序数组当中...

  • 算法必知 --- 归并排序(优化与案例)

    算法描述 使用归并排序进行升序排列。 示例: 算法设计 基本思路:借助额外空间,合并两个有序数组,得到更长的有序数...

  • 合并两个有序数组(C)

    合并两个有序数组,合并完之后仍有序:

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 10-3 有序组合合并

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

网友评论

      本文标题:C语言算法:有序数组合并-2020-08-21

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