I was just wondering, which one is the true definition? Both the implementations are quite similar, but in first case, it doesn't use recursion and merges array into an another array while in second case, it uses divide and conquer method.
The first one describes what is called a merge, which is an algorithm for merging 2 arrays, this usually runs with O(n) complexity. However the problem is that the 2 arrays have to be sorted for a merge to work. So how do you get a sorted array? By splitting it into multiple one element lists, you can then merge the one element lists together again and again(Log 2 N times) to get a complete sorted list. This process is called the merge sort.
So in short, the second one is what is known as a merge sort.