Merge sort approach in Python
There is a couple of problems with your implementation.


The most important trait of the merge sort is stability: the elements compared equal retain their relative order. It does not matter when sorting integers, but is extremely important when sorting more complex data. The comparison

    if(A1[0] &lt; A2[0]):


loses stability, because in case A1[0] is equal to A2[0] the element from A2 will be merged first. The correct way is to if A1[0] &lt;= A2[0].
pop(0) has a linear time complexity, which renders the overall performance quadratic. B1 = B1 + A1 + A2 creates yet another copy of the list, and it doesn't help the performance either.


Manipulating indices, if done right, does reduce memory allocations and deallocations indeed. Unfortunately the GeeksForGeeks code you provided doesn't do it right.