Created
January 15, 2014 17:38
-
-
Save gabrielhpugliese/8440696 to your computer and use it in GitHub Desktop.
python sorts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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