Advertisement
Guest User

Untitled

a guest
Aug 24th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. def mergeSort(arr):
  2.     if len(arr) <= 1:
  3.         return arr
  4.     return merge(mergeSort(left(arr)), mergeSort(right(arr)))
  5.  
  6. def left(arr):
  7.     return arr[0:mid(arr)]
  8.  
  9. def right(arr):
  10.     return arr[mid(arr):]
  11.  
  12. def mid(arr):
  13.     return (0 + len(arr)) / 2
  14.  
  15. def merge(L1, L2): # Basically two-ptr sorted array problem
  16.     i, j = 0, 0
  17.     res = []
  18.  
  19.     while i < len(L1) and j < len(L2):
  20.         if L1[i] < L2[j]:
  21.             res.append(L1[i])
  22.             i += 1
  23.         else:
  24.             res.append(L2[j])
  25.             j += 1
  26.  
  27.     res = appendIfRemaining(res, L1, i)
  28.     res = appendIfRemaining(res, L2, j)
  29.  
  30.     return res
  31.  
  32. def appendIfRemaining(res, arr, index):
  33.     while index < len(arr):
  34.         res.append(arr[index])
  35.         index += 1
  36.     return res
  37.  
  38. print(merge([1], [2]))
  39. print(merge([6], [3]))
  40. print(merge([1, 2], [3, 6]))
  41. print(mergeSort([1, 2, 6, 3]))
  42. print(mergeSort([1]))
  43. print(mergeSort([]))
  44. print(mergeSort([-1, -1, 5, 5, 2, 3, 1000]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement