学习数据结构和算法的第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;
}
相关推荐
Fanxt_Ja3 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下3 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶3 小时前
算法 --- 字符串
算法
博笙困了4 小时前
AcWing学习——差分
c++·算法
NAGNIP4 小时前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP4 小时前
大模型微调框架之LLaMA Factory
算法
echoarts4 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客4 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法
徐小夕4 小时前
花了一天时间,开源了一套精美且支持复杂操作的表格编辑器tablejs
前端·算法·github
2303_Alpha4 小时前
SpringBoot
笔记·学习