Pygorithm module in Python

Pygorithm module is a Python module written purely in Python and for educational purposes only. One can get the code, time complexities and much more by just importing the required algorithm. It is a good way to start learning Python programming and understanding concepts. Pygorithm module can also help to learn the implementation of all major algorithms in Python language.
To install Pygorithm module:
pip3 install pygorithm
Example:
# import the required data structure from pygorithm.data_structures import stack     # create a stack with default stack size 10 myStack = stack.Stack()   # push elements into the stack myStack.push(2) myStack.push(5) myStack.push(9) myStack.push(10)   # print the contents of stack print(myStack)   # pop elements from stack myStack.pop() print(myStack)   # peek element in stack print(myStack.peek())   # size of stack print(myStack.size()) |
Output:
2 5 9 10 2 5 9 9 3
Â
To see all the available functions in a module, just type help() with the module name as argument.
# Help on package pygorithm.data_structures help(data_structures) |
Output:
NAME
pygorithm.data_structures - Collection of data structure examples
PACKAGE CONTENTS
graph
heap
linked_list
quadtree
queue
stack
tree
trie
DATA
__all__ = ['graph', 'heap', 'linked_list', 'queue', 'stack', 'tree', '...
Â
To get code for any of these data_structures using get_code().
# to get code for BinarySearchTree BStree = tree.BinarySearchTree.get_code() Â Â print(BStree) |
Output:
class BinarySearchTree(object):
def __init__(self):
self.root = None
def insert(self, data):
"""
inserts a node in the tree
"""
if self.root:
return self.root.insert(data)
else:
self.root = BSTNode(data)
return True
def delete(self, data):
"""
deletes the node with the specified data from the tree
"""
if self.root is not None:
return self.root.delete(data)
def find(self, data):
if self.root:
return self.root.find(data)
else:
return False
def preorder(self):
"""
finding the preorder of the tree
"""
if self.root is not None:
return self.root.preorder(self.root)
def inorder(self):
"""
finding the inorder of the tree
"""
if self.root is not None:
return self.root.inorder(self.root)
def postorder(self):
"""
finding the postorder of the tree
"""
if self.root is not None:
return self.root.postorder(self.root)
@staticmethod
def get_code():
"""
returns the code of the current class
"""
return inspect.getsource(BinarySearchTree)
Â
To get complexities for the following scripts:
# create a stack with default stack size 10 Bsort = sorting.bubble_sort.time_complexities() |
Output:
Best Case: O(n), Average Case: O(n ^ 2), Worst Case: O(n ^ 2). For Improved Bubble Sort: Best Case: O(n); Average Case: O(n * (n - 1) / 4); Worst Case: O(n ^ 2)



