第2章 排序 || 第15节 有序数组合并练习题

  • 题目

有两个从小到大排序以后的数组A和B,其中A的末端有足够的缓冲空容纳B。请编写一个方法,将B合并入A并排序。

给定两个有序int数组AB,A中的缓冲空用0填充,同时给定A和B的真实大小int n和int m,请返回合并后的数组。

  • 解析

class Merge {
public:
    int* mergeAB(int* A, int* B, int n, int m) {
        // write code here
        while(n>0&&m>0)
        {
            if(A[n-1]>B[m-1])
            {
                A[m+n-1]=A[n-1];
                n--;
            }
            else
            {
                A[m+n-1]=B[m-1];
                m--;
            }            
        }
        while(m>0)
        {
            A[m-1]=B[m-1];
            m--;
        }
        return A;
    }
};

 – python

# -*- coding:utf-8 -*-
class Merge:
    def mergeAB(self, A, B, n, m):
        # write code here
        i,j=n,m
        while i>0 and j>0:
            if A[i-1]>B[j-1]:
                A[i+j-1]=A[i-1]
                i=i-1
            else:
                A[i+j-1]=B[j-1]
                j=j-1
        if j>0:
            A[:j]=B[:j]
        return A

 

    原文作者:ranjiewen
    原文地址: https://www.cnblogs.com/ranjiewen/p/9191762.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞