← Arrays

Merge Sorted Arrays

Easy
Python
def merge(n1,m,n2,n):
    i,j,k=m-1,n-1,m+n-1
    while i>=0 and j>=0:
        if n1[i]>n2[j]: n1[k]=n1[i]; i-=1
        else: n1[k]=n2[j]; j-=1
        k-=1
    while j>=0: n1[k]=n2[j]; j-=1; k-=1
Java
public void merge(int[] n1,int m,int[] n2,int n){
    int i=m-1,j=n-1,k=m+n-1;
    while(i>=0&&j>=0) n1[k--]=n1[i]>n2[j]?n1[i--]:n2[j--];
    while(j>=0) n1[k--]=n2[j--];
}

Key Insight

Java ternary and post-decrement are compact.

Python → Java Differences

  • Java ternary ? : compact
  • post-decrement k-- Java only
  • Merge from end identical
Python
def merge(n1,m,n2,n):
    i,j,k=m-1,n-1,m+n-1
    while i>=0 and j>=0:
        if n1[i]>n2[j]: n1[k]=n1[i]; i-=1
        else: n1[k]=n2[j]; j-=1
        k-=1
    while j>=0: n1[k]=n2[j]; j-=1; k-=1
Java
public void merge(int[] n1,int m,int[] n2,int n){
    int i=m-1,j=n-1,k=m+n-1;
    while(i>=0&&j>=0) n1[k--]=n1[i]>n2[j]?n1[i--]:n2[j--];
    while(j>=0) n1[k--]=n2[j--];
}

Algorithm Steps

1. Compare from end
2. Place larger element