Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
7 changes: 4 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
"""Setup for data-structure package."""
from setuptools import setup

extra_packages = {
'testing': ['ipython', 'pytest', 'pytest-cov', 'tox']
'testing': ['ipython', 'pytest', 'tox']
}

setup(
name='data-structures',
desctription='A variety of data structures built with Python.',
version='0.1',
author='James Salamonsen',
author='James Salamonsen and Alex Short',
author_email='jamessalamonsen@gmail.com',
license='MIT',
py_modules=[],
Expand All @@ -19,4 +20,4 @@
'console_scripts': [
]
}
)
)
Binary file modified src/.DS_Store
Binary file not shown.
221 changes: 0 additions & 221 deletions src/BST.py

This file was deleted.

46 changes: 46 additions & 0 deletions src/insertion_sort.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
"""An example of the insertion sort."""


def insertion_sort(numbers):
"""Will sort any given number iterable into a min first list."""
new = []
while len(new) < len(numbers):
x = 0
for i in numbers:
while True:
try:
if new[x] >= i:
new.insert(x, i)
x = 0
break
else:
x += 1
except IndexError:
new.append(i)
x = 0
break
return new


def existing_set_insertion_sort(numbers, existing_set):
"""Will sort any given number iterable into a min first list."""
new = list(existing_set)
while len(new) < len(numbers) + len(existing_set):
x = 0
for i in numbers:
while True:
try:
if x is 0 and new[x] >= i:
new.insert(x, i)
break
elif new[x] >= i:
new.insert(x, i)
x = 0
break
else:
x += 1
except IndexError:
new.append(i)
x = 0
break
return new
92 changes: 92 additions & 0 deletions src/merge_sort.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
"""A merge sort function."""
from insertion_sort import existing_set_insertion_sort as esis

from insertion_sort import insertion_sort


def merge2(numbers):
"""Mob Programming"""
if len(numbers) == 1:
return numbers
if len(numbers) == 2:
if numbers[0] > numbers[1]:
numbers[0], numbers[1] = numbers[1], numbers[0]
return numbers
midpnt = len(numbers) // 2
left = merge2(numbers[:midpnt])
right = merge2(numbers[midpnt:])

output = []
while left or right:
if left and right and left[0] < right[0]:
output.append(left.pop(0))
elif left and right and left[0] >= right[0]:
output.append(right.pop(0))
elif left and not right:
output.extend(left)
break
elif right and not left:
output.extend(right)
break

return output


def merge_sort(numbers):
"""Sort a iterable of numbers into min first via merge sort non-recursively."""
final = []
compare = []
temp = []
hold_extra = []
if len(numbers) == 1:
return numbers
elif len(numbers) == 2:
if numbers[0] > numbers[1]:
numbers[0], numbers[1] = numbers[1], numbers[0]
return numbers

elif len(numbers) == 3:
return insertion_sort(numbers)
if len(numbers) % 2 == 0:
for i in range(0, len(numbers), 2):
temp.append(numbers[i: i + 2])
for pair in temp:
if pair[0] > pair[1]:
pair[0], pair[1] = pair[1], pair[0]
else:
for i in range(0, len(numbers) - 1, 2):
temp.append(numbers[i: i + 2])
for pair in temp:
if pair[0] > pair[1]:
pair[0], pair[1] = pair[1], pair[0]
hold_extra.append(numbers[len(numbers) - 1])
while 1:
if final:
if len(final) == 1:
if hold_extra:
return esis(hold_extra, final[0])
return final[0]
temp = list(final)
if len(temp) % 2 == 1:
hold_extra.extend(temp[len(temp) - 1])
final = []
for i in range(0, len(temp) - 1, 2):
t = 0
k = 0
while 1:
if t >= len(temp[i]) and k >= len(temp[i + 1]):
final.append(compare)
compare = []
break
elif t >= len(temp[i]):
compare.append(temp[i + 1][k])
k += 1
elif k >= len(temp[i + 1]):
compare.append(temp[i][t])
t += 1
elif temp[i][t] >= temp[i + 1][k]:
compare.append(temp[i + 1][k])
k += 1
elif temp[i][t] <= temp[i + 1][k]:
compare.append(temp[i][t])
t += 1
Loading