Skip to content

Commit 171aa34

Browse files
committed
initialize repository
0 parents  commit 171aa34

16 files changed

+313
-0
lines changed

Assignment 3.docx

442 KB
Binary file not shown.

Search.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class SequentialStringList():
2+
def __init__(self) -> None:
3+
self.list: list = []
4+
5+
def add(self, string: str) -> list:
6+
self.list.append(string)
7+
return self.list
8+
9+
def find(self, string: str):
10+
for i in range(len(self.list)):
11+
if self.list[i] == string:
12+
return self.list[i]
13+
return None
14+
15+
class BinaryStringList():
16+
def __init__(self) -> None:
17+
self.list: list = []
18+
19+
def add(self, string: str) -> list:
20+
self.list.append(string)
21+
return self.list
22+
23+
def find(self, string: str):
24+
low: int = 0;
25+
high: int = len(self.list)-1
26+
while low < high:
27+
mid = (low + high)//2
28+
if self.list[mid] == string:
29+
return string
30+
if string > self.list[mid]:
31+
low = mid + 1
32+
else:
33+
high = mid - 1
34+
return None

Sort.py

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
class BubbleStringList():
2+
def __init__(self) -> None:
3+
self.list: list = []
4+
5+
def add(self, string: str) -> list:
6+
self.list.append(string)
7+
return self.list
8+
9+
def sort(self):
10+
for i in range(len(self.list)):
11+
for j in range(len(self.list) - 1, i, -1):
12+
if self.list[j] < self.list[j - 1]:
13+
self.swap(j, j - 1)
14+
15+
def swap(self, x, y):
16+
temp = self.list[x]
17+
self.list[x] = self.list[y]
18+
self.list[y] = temp
19+
20+
class MergeStringList():
21+
def __init__(self) -> None:
22+
self.list: list = []
23+
24+
def add(self, string: str) -> list:
25+
self.list.append(string)
26+
return self.list
27+
28+
def sort(self, listToSort: list) -> list:
29+
if len(listToSort) > 1:
30+
mid = len(listToSort)//2
31+
left = listToSort[:mid]
32+
right = listToSort[mid:]
33+
self.sort(left)
34+
self.sort(right)
35+
i = j = k = 0
36+
while i< len(left) and j < len(right):
37+
if left[i] < right[i]:
38+
listToSort[k] = left[i]
39+
i += 1
40+
else:
41+
listToSort[k] = right[j]
42+
j += 1
43+
k += 1
44+
while i< len(left):
45+
listToSort[k] = left[i]
46+
i += 1
47+
k += 1
48+
self.list = listToSort
49+
50+
51+
class QuickStringList():
52+
def __init__(self) -> None:
53+
self.list: list = []
54+
55+
def add(self, string: str) -> list:
56+
self.list.append(string)
57+
return self.list
58+
59+
def swap(self,listToSort: list, x: int, y: int):
60+
temp = listToSort[x]
61+
listToSort[x] = listToSort[y]
62+
listToSort[y] = temp
63+
64+
def sort(self, listToSort: list, low: int, high: int):
65+
if low < high:
66+
pivot = self.divide(listToSort, low, high)
67+
self.sort(listToSort, low, pivot - 1)
68+
self.sort(listToSort, pivot + 1, high)
69+
self.list = listToSort
70+
71+
def divide(self, listToSort: list, low, high) -> int:
72+
pivot = low
73+
self.swap(listToSort, pivot, high)
74+
for i in range(low, high):
75+
if listToSort[i] <= listToSort[high]:
76+
self.swap(listToSort, i, low)
77+
low += 1
78+
self.swap(listToSort, low, high)
79+
return low
80+
81+
# sort_list = QuickStringList();
82+
# sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
83+
# "Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
84+
85+
# for string in sample_list:
86+
# sort_list.add(string=string)
87+
88+
# sort_list.sort(sort_list.list, 0, len(sort_list.list)-1)
89+
# print(sort_list.list)

__init__.py

Whitespace-only changes.

__pycache__/Search.cpython-310.pyc

1.42 KB
Binary file not shown.

__pycache__/Sort.cpython-310.pyc

3.03 KB
Binary file not shown.
1.13 KB
Binary file not shown.
1.86 KB
Binary file not shown.

binary_seach_tree.py

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from binary_tree import Node
2+
3+
class BinaryTreeStringList:
4+
def __init__(self) -> None:
5+
self.root: Node = None
6+
self.connections: int = 0
7+
self.stringList: list = []
8+
9+
def find(self, data):
10+
'''
11+
Worst case time complexity is O(n) since we can navigate the whole tree
12+
'''
13+
currentNode: Node = self.root
14+
while currentNode:
15+
if data == currentNode.getData():
16+
return currentNode.getData()
17+
if data < currentNode.getData():
18+
currentNode = currentNode.getLeft()
19+
else:
20+
currentNode = currentNode.getRight()
21+
self.connections += 1
22+
return None
23+
24+
def all(self):
25+
currentNode: Node = self.root
26+
self.stringList: list = []
27+
self.allNodes(self.root)
28+
return self.stringList
29+
30+
def allNodes(self, currentNode: Node):
31+
'''
32+
Worst case time complexity is O(n) since we can navigate the whole tree
33+
'''
34+
while currentNode:
35+
self.stringList.append(currentNode.getData())
36+
if not currentNode.getLeft() is None:
37+
return(self.allNodes(currentNode.getLeft()))
38+
else:
39+
return(self.allNodes(currentNode.getRight()))
40+
41+
def add(self, data):
42+
self.insertNode(self.root, data)
43+
44+
def insertNode(self, root: Node, data: str):
45+
node: Node = Node()
46+
node.setData(data)
47+
48+
if self.root is None:
49+
self.root = node
50+
else:
51+
if root.getData() > node.getData():
52+
if root.getLeft() is None:
53+
root.setLeft(node)
54+
else:
55+
return(self.insertNode(root.left, data))
56+
else:
57+
if root.getRight() is None:
58+
root.setRight(node)
59+
else:
60+
return(self.insertNode(root.right, data))

binary_search_tree_test.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from binary_seach_tree import BinaryTreeStringList
2+
3+
search_list = BinaryTreeStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
search_list.add(string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Within The list********************');
13+
time_taken=timeit.repeat(stmt='search_list.find(data="Flotsam")', setup="from __main__ import search_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')
16+
17+
print('*******************Not in the list********************');
18+
time_taken=timeit.repeat(stmt='search_list.find(data="test")', setup="from __main__ import search_list", repeat=5)
19+
print(time_taken)
20+
print(f'Average time {sum(time_taken)/5}')

binary_test.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from Search import BinaryStringList
2+
3+
search_list = BinaryStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
search_list.add(string=string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Within The list********************');
13+
time_taken=timeit.repeat(stmt='search_list.find(string="Flotsam")', setup="from __main__ import search_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')
16+
17+
print('*******************Not in the list********************');
18+
time_taken=timeit.repeat(stmt='search_list.find(string="test")', setup="from __main__ import search_list", repeat=5)
19+
print(time_taken)
20+
print(f'Average time {sum(time_taken)/5}')
21+

binary_tree.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Node():
2+
def __init__(self) -> None:
3+
self.data = None
4+
self.left = None
5+
self.right = None
6+
7+
def setData(self, data):
8+
self.data = data
9+
10+
def getData(self):
11+
return self.data
12+
13+
def setLeft(self, data):
14+
self.left = data
15+
16+
def getLeft(self):
17+
return self.left
18+
19+
def setRight(self, data):
20+
self.right = data
21+
22+
def getRight(self):
23+
return self.right

bubble_test.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from Sort import BubbleStringList
2+
3+
sort_list = BubbleStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
sort_list.add(string=string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Sorting Result********************');
13+
time_taken=timeit.repeat(stmt='sort_list.sort()', setup="from __main__ import sort_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')
16+

merge_test.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from Sort import MergeStringList
2+
3+
sort_list = MergeStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
sort_list.add(string=string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Sorting Result********************');
13+
time_taken=timeit.repeat(stmt='sort_list.sort(sort_list.list)', setup="from __main__ import sort_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')

quick_test.py

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from Sort import QuickStringList
2+
3+
sort_list = QuickStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
sort_list.add(string=string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Sorting Result********************');
13+
time_taken=timeit.repeat(stmt='sort_list.sort(sort_list.list, 0, len(sort_list.list)-1)', setup="from __main__ import sort_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')

sequential_test.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from Search import SequentialStringList
2+
3+
search_list = SequentialStringList();
4+
sample_list = ["Swedish","McFish","Puff Daddy","Floater","Wave","Chips","Bob","Flotsam","Miso","Cod","Finley","Finneus",
5+
"Larry","Salmon","Sea Beast","Otto","Sardine","Pirate","Captain Jack Sparrow","Long John Silver"]
6+
7+
for string in sample_list:
8+
search_list.add(string=string)
9+
10+
if __name__=="__main__":
11+
import timeit
12+
print('*******************Within The list********************');
13+
time_taken=timeit.repeat(stmt='search_list.find(string="Flotsam")', setup="from __main__ import search_list", repeat=5)
14+
print(time_taken)
15+
print(f'Average time {sum(time_taken)/5}')
16+
17+
print('*******************Not in the list********************');
18+
time_taken=timeit.repeat(stmt='search_list.find(string="test")', setup="from __main__ import search_list", repeat=5)
19+
print(time_taken)
20+
print(f'Average time {sum(time_taken)/5}')

0 commit comments

Comments
 (0)