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
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--];
}
Java ternary and post-decrement are compact.
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
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--];
}
1. Compare from end 2. Place larger element