Skip to content

Instantly share code, notes, and snippets.

@gabrielhpugliese
Created January 15, 2014 17:38
Show Gist options
  • Save gabrielhpugliese/8440696 to your computer and use it in GitHub Desktop.
Save gabrielhpugliese/8440696 to your computer and use it in GitHub Desktop.
python sorts
def selection_sort(arr):
i = 0
j = 0
while i < len(arr) - 1:
j = i + 1
while j < len(arr):
if arr[i] > arr[j]:
arr[i], arr[j] = arr[j], arr[i]
j += 1
i += 1
return arr
def insertion_sort(arr):
i = 0
j = 0
while i < len(arr) - 1:
j = i + 1
while j > 0 and arr[j - 1] > arr[j]:
arr[j - 1], arr[j] = arr[j], arr[j - 1]
j -= 1
i += 1
return arr
def bubble_sort(arr):
i = len(arr)
j = 0
while i > 0:
j = 0
while j < i - 1:
if arr[j] > arr[j + 1]:
arr[j + 1], arr[j] = arr[j], arr[j + 1]
j += 1
i -= 1
return arr
def merge_sort(arr):
if len(arr) == 1:
return arr
mid = len(arr) / 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return _merge(left, right)
def _merge(left, right):
result = []
i = 0
j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
if (i != len(left)):
result.extend(left[i:])
if (j != len(right)):
result.extend(right[j:])
return result
def quick_sort(arr):
if len(arr) <= 1:
return arr
left = []
right = []
pivot = arr[0]
i = 1
while i < len(arr):
if arr[i] <= pivot:
left.append(arr[i])
else:
right.append(arr[i])
i += 1
return quick_sort(left) + [pivot] + quick_sort(right)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment