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

题目练习

合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 ,另有两个整数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;
}
相关推荐
m4Rk_26 分钟前
【论文阅读】Agent 记忆机制(113):Agentic Memory Management——从“检索相关信息”走向“管理 Agent 内部记忆”
论文阅读·人工智能·学习·开源·github
INGNIGHT40 分钟前
91 · 最小调整代价(序列dp)
数据结构·算法·leetcode
moshuying40 分钟前
扩散模型开始写代码、开网页了:350 亿参数,速度比 Jev 快一倍
前端·算法
小超人诞生日记1 小时前
C++ 异常机制详解:从抛出捕获到异常安全
c++·算法
辣知1 小时前
辣知·化智92 《山海经》里的史前密码
学习
鬼手点金2 小时前
KV Cache 未必是一次性的:可编辑、可组合的“笔记”
java·人工智能·笔记·学习·自动化·1024程序员节
labuladong2 小时前
机器学习&神经网络 系列教程上线
神经网络·算法·机器学习
xiangyun612 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl
学习论之费曼学习法2 小时前
无人值守AI内容矩阵实战(8):标题 A/B 实验的 6 个工程实现细节,隔日对比与自动判胜
人工智能·python·算法·矩阵·自动化·a/b测试·内容矩阵
Carl_奕然2 小时前
【机器视觉】最强算法之:3D高斯泼溅(3D Gaussian Splatting)
人工智能·python·算法·目标检测·计算机视觉·3d