Skip to content

Instantly share code, notes, and snippets.

@eric-cc-su
Created September 23, 2015 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eric-cc-su/f1af18a3b85b49f9a553 to your computer and use it in GitHub Desktop.
Save eric-cc-su/f1af18a3b85b49f9a553 to your computer and use it in GitHub Desktop.
Sorting Algorithms studies
import sys
import time
#Deal with Python2 and Python3 inputs
def getInput(prompt):
if (sys.version[0] == "2"):
return raw_input(prompt)
else:
return input(prompt)
testInput = getInput("Input an array: ")
if type(testInput == str):
testInput = [int(i) for i in testInput.strip("[]").split(",")]
# Insertion sort
def insertion(inputArray):
for index, item in enumerate(inputArray):
#start at 0 index
if (index > 0):
moveIndex = index-1
while(item < inputArray[moveIndex] and moveIndex >= 0):
temp = inputArray[moveIndex]
inputArray[moveIndex] = item
inputArray[moveIndex + 1] = temp
moveIndex -= 1
return inputArray
#testInputCopy = testInput
#print( insertion(testInputCopy) )
# Merge sort
# based off algorithm from here: http://geeksquiz.com/merge-sort/
def merge(inputArray, start, divide, end):
j = 0 #index to follow in non-focused list
k = start
left = inputArray[start:divide]
right = inputArray[divide:end]
for index, item in enumerate(left):
while j < len(right):
if item > right[j]:
inputArray[k] = right[j]
j += 1
k += 1
else:
break
inputArray[k] = item
k += 1
def mergeSort(inputArray, start, end):
if start < end - 1:
submax = int((start + end)/2)
mergeSort(inputArray, start, submax)
mergeSort(inputArray, submax, end)
merge(inputArray, start, submax, end)
else:
return inputArray
returnCopy = testInput
print("before:")
print(returnCopy)
mergeSort(returnCopy, 0, len(testInput))
print("after:")
print( returnCopy )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment