C++ merge sorting algorithm recursive and non-recursive