Could someone kindly have a look at the recursive merge sort below and let me know if there are any improvements? I'm mainly interested in either improving the code speed or making the code shorter.
def mergesort(alist):
if len(alist) > 1:
mid = len(alist)/2
left = alist[:mid]
right = alist[mid:]
mergesort(left)
mergesort(right)
i = 0
j = 0
k = 0
while i < len(left) and j < len(right):
if left[i] > right[j]:
alist[k] = right[j]
j = j + 1
elif left[i] < right[j]:
alist[k] = left[i]
i = i + 1
k = k + 1
while i < len(left):
alist[k] = left[i]
i = i + 1
k = k + 1
while j < len(right):
alist[k] = right[j]
j = j + 1
k = k + 1
A = [4, 3, 1, 2, 6, 8, 10]
mergesort(A)
print(A)