备战蓝桥杯:两道关于逆序对的问题

题1:给定两个排序后的数组A和B, 其中A的末端有足够的缓冲空间容纳B, 编写一个方法, 将B合并入A并排序

解题思路: 定义指针a和指针b,如果a>=b,a元素等于current元素,指针a左移一位,指标current左移一位,直到a指针或者b指针小于0, 这里考虑到如果数组B整体小于数组A,可能指针a走出了边界,指针b左边的元素全部挪过去,如果是指针b先出了边界,指针a左边的元素不需挪动,因为整体已经有序了,自己可以图画试试
在这里插入图片描述

代码如下

static void mergeSort(int[] A, int[] B) {
   
     // 待插入元素的位置
     int current = A.length - 1;
     // 数组a待比较元素下标
     int a = A.length - B.length - 1;
     // 数组b待比较元素下标
     int b = B.length - 1;
     while (a >= 0 && b >= 0) {
   
         if (A[a] >= B[b]) {
   
             A[current] = A[a];
             a--;
             current--;
         }
         else {
   
             A[current
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值