学习数据结构和算法的第12天

题目练习

合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1nums2 ,另有两个整数m和n,分别表示nums1和 nums2 中的元素数目。

请你 合并 nums2到nums1中,使合并后的数组同样按非递减顺序排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。

c 复制代码
#include <stdio.h>
#define MAX_SIZE 100
//合并两个有序数组的函数
void mergeArrays(int arr1[], int n1, int arr2[], int n2, int result[])
{
    int i = 0, j = 0, k = 0;
    //循环比较两个数组的元素,将较小的元素放入接果函数中
    while (i < n1 && j < n2) 
    {
        if (arr1[i] < arr2[j])
        {
            result[k] = arr1[i];
            i++;
        }
        else 
        {
            result[k] = arr2[j];
            j++;
        }
        k++;
    }
    //将剩余元素放入接果数组中
    while (i < n1)
    {
        result[k] = arr1[i];
        i++;
        k++;
    }
    while (j < n2) 
    {
        result[k] = arr2[j];
        j++;
        k++;
    }
}
int main() 
{
    int arr1[MAX_SIZE] = {1, 3, 5, 7, 9};
    int n1 = 5;
    int arr2[MAX_SIZE] = {2, 4, 6, 8, 10};
    int n2 = 5;
    int result[MAX_SIZE];
    //调用mergeArrays函数,合并两个有序数组
    mergeArrays(arr1, n1, arr2, n2, result);
    int totalSize = n1 + n2;
    //大印和并后的数组
    printf("Merged array: ");
    for (int i = 0; i < totalSize; i++)
    {
        printf("%d ", result[i]);
    }
    return 0;
}
相关推荐
茯苓gao13 小时前
机器人产业的三级火箭:卖电机、卖模组与卖整机,三种商业模式的终局推演
笔记·学习·机器人
mm99542014 小时前
PMI三大证书:PMP、PgMP、PfMP证书对比
学习·职场和发展·项目管理·学习方法·pmp
froyoisle14 小时前
CSP 真题解析:[CSP-J 2019-T4] 加工零件
c++·算法·bfs·csp-j·算法竞赛·信息学·信奥赛
LuminousCPP14 小时前
C 语言集中实践全记录:顺序表 + 单链表原理实现与通讯录项目实战【附可运行源码】
c语言·开发语言·数据结构·经验分享·笔记
兰令水14 小时前
hot100【acm版】【2026.7.13打卡-java版本】
java·开发语言·数据结构·算法·leetcode·面试
Tisfy14 小时前
LeetCode 1291.顺次数:打表/枚举
算法·leetcode·题解·枚举·遍历
铅笔侠_小龙虾14 小时前
Rust 学习(4)-函数与注释
开发语言·学习·rust
ysa05103014 小时前
【板子】拓扑排序
c++·算法·图论·板子
猪头少年不会遇见算法学姐15 小时前
Makefile快速上手笔记
linux·学习
算法备案代理15 小时前
宽带自动连接保姆级教程
算法