Skip to content

Instantly share code, notes, and snippets.

🏠
Working from home

Diego Gallegos DiegoGallegos4

🏠
Working from home
Block or report user

Report or block DiegoGallegos4

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View binary_search_tree.py
class TreeNode:
def __init__(self, key, parent=None, left=None, right=None):
self.key = key
self.parent = parent
self.left = left
self.right = right
class BinarySearchTree:
def __init__(self):
self.root = None
View heap.py
class BinaryMaxHeap:
def __init__(self):
self.size = -1
self.heap = []
def parent(self, i):
return (i - 1) // 2
def left_child(self, i):
return 2 * i + 1
@DiegoGallegos4
DiegoGallegos4 / dynamic_array.py
Last active Apr 19, 2019
Dynamic Array (Vector)
View dynamic_array.py
import ctypes
class DynamicArray:
def __init__(self):
self.capacity = 1
self.size = 0
self.array = self._make_array(self.capacity)
def append(self, elt):
if self.size == self.capacity:
View lifo_fifo.py
class Stack:
def pop(self):
pass
def top(self):
pass
def push(self, key):
pass
View doubly_linked_list.py
class Node:
def __init__(self, key, next=None, prev=None):
self.key = key
self.next = next
self.prev = prev
class DoublyLinkedList:
def __init__(self, head=None):
self.head = None
self.tail = None
View tree.py
class BinaryTree:
def __init__(self, key, left=None, right=None):
self.key = key
self.left = left
self.right = right
def insert_left(self, key):
if self.left:
node = BinaryTree(key)
node.left = self.left
View singly_linked_list.py
class Node:
def __init__(self, key, next):
self.key = key
self.next = next
class List:
def __init__(self, head=None):
self.head = head
self.tail = None
@DiegoGallegos4
DiegoGallegos4 / quicksort.py
Last active Apr 15, 2019
Divide and Conquer: Quicksort
View quicksort.py
def partition(A, left, right):
pivot, j = A[left], left
for i in range(left + 1, right + 1):
if A[i] <= pivot:
j += 1
A[i], A[j] = A[j], A[i]
A[left], A[j] = A[j], A[left]
return j
View merge_sort.py
def merge(A, B):
C = []
while len(A) and len(B):
a, b = A[0], B[0]
if a <= b:
C.append(A.pop(0))
else:
C.append(B.pop(0))
while len(A):
C.append(A.pop(0))
View selection_sort.py
def selection_sort(A):
for i in range(len(A)):
min_index = i
for j in range(i+1, len(A)):
if A[j] < A[min_index]:
min_index = j
A[i], A[min_index] = A[min_index], A[i]
return A
You can’t perform that action at this time.