学习数据结构和算法的第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;
}
相关推荐
0 0 02 分钟前
CCF-CSP第39次认证第三题——HTTP 头信息(HPACK)【C++】
开发语言·c++·算法
是一个Bug7 分钟前
源码学习方法论
学习
合方圆~小文7 分钟前
不同画面,三个镜头实时监控拍摄方案
数据结构·数据库·人工智能
Q8762239658 分钟前
西门子S7 - 1200控制5轴伺服程序与维纶触摸屏画面案例分享
数据结构
Data_agent14 分钟前
1688按图搜索1688商品(拍立淘)API ,Python请求示例
爬虫·python·算法·图搜索算法
汉克老师15 分钟前
2023年海淀区中小学信息学竞赛复赛(小学组试题第二题 回文时间 (time))
c++·算法·北京海淀中小学信息竞赛·模拟法
lx74160269821 分钟前
change clip架构学习
人工智能·学习·计算机视觉
代码雕刻家26 分钟前
1.9.课设实验-数据结构-图-校园跑最短路径
c语言·数据结构·算法·图论
做一道光38 分钟前
电机控制——电流采样(三电阻)
单片机·嵌入式硬件·学习·电机控制
white-persist40 分钟前
【攻防世界】reverse | re1-100 详细题解 WP
c语言·开发语言·网络·汇编·python·算法·网络安全