数组归并排序

本文介绍了一种高效地将两个已排序数组合并为一个排序数组的方法。通过从后向前比较和移动元素,避免了不必要的内存开销,实现了最优的排序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

      有两个排序的数组A1和A2, 内存在A1的末尾有足够多的空余空间容纳A2,请实现一个函数,把A2中的所有数组 插入到A1中并且所有的数字都是排序的。

分析

      1.在内存中数组是线性表数据结构,数据都是按顺序储存的,如果从数组头部进行归并排序, 会出现一个数字多次复制的现象,内存开销比较大,从后往前复制会减少数字移动次数,减小开支。

      2.数组长度固定,先用指针指向A1和A2以及归并后A1的尾部下坐标。

      3.比较A1和A2指针处数字大小,把较大的数字放到归并后A1指针的位置,同时,较大数字所在数组和归并后A1指针向前移一个位置。

      4.如果A2中还有元素没有插入到A1中,则全部插入到A1的前面。

案列

      以数组A1[7,8,9,11]和A2[4,5,8,10]为例,初始时指针指向A1中的11,A2中的10,归并后A1的尾部下坐标

      

比较11和10,11大于10,把11复制到归并后A1尾部,A1和归并后A1指针向前移一个单位,A1指针指向9。

      

同理,比较10大于9,把10复制到归并后A1尾部,A2和归并后A1指针向前移一个单位,A2指针指向8

      

依次排序,直到归并成一个递增数组。

参考代码

      






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值