Skip to content

Instantly share code, notes, and snippets.

@edrzmr
Created September 3, 2018 18:34
Show Gist options
  • Save edrzmr/f41b6e0ef5b240df137e1ed9e68e381b to your computer and use it in GitHub Desktop.
Save edrzmr/f41b6e0ef5b240df137e1ed9e68e381b to your computer and use it in GitHub Desktop.
mergesort.py
def merge(arr, r, ini, end):
mid = (ini+end) // 2
left = ini
right = mid+1
i = ini
while left <= mid and right <= end:
if arr[left] <= arr[right]:
r[i] = arr[left]
left += 1
else:
r[i] = arr[right]
right += 1
i += 1
while left <= mid:
r[i] = arr[left]
i += 1
left += 1
while right <= end:
r[i] = arr[right]
i += 1
right += 1
while ini <= end:
arr[ini] = r[ini]
ini += 1
def mergeSort(arr, r, ini, end):
if ini >= end:
return
mid = (ini+end) // 2
mergeSort(arr, r, ini, mid) # left
mergeSort(arr, r, mid+1, end) # right
merge(arr, r, ini, end)
def sort(arr):
r = [0] * len(arr)
mergeSort(arr, r, 0, len(arr)-1)
arr = [7, 3, 2, 4]
print('orig:, ', arr)
sort(arr)
print('result:, ', arr)
arr = [7, 3, 2, 4, 1]
print('orig:, ', arr)
sort(arr)
print('result:, ', arr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment