Metadata-Version: 2.1
Name: PyHeap
Version: 0.0.4
Summary: A small heap implementation with customizeable key
Home-page: https://github.com/Sammyalhashe/PyHeap
Author: Sammyalhashe
Author-email: sammy.alhashemi@mail.utoronto.ca
License: UNKNOWN
Description: # PyHeap
        
        - Simple implementation of a heap that takes an arbitrary key for sorting.
        - By default, the heaps are minHeaps. (can be changed by setting `isMin=False`) in constructor
        
        ## Example Usage:
        
        ```python
        from PyHeap import Heap
        
        # instantiate an empty heap as follows
        # insert elements using the insert method
        heap = Heap()
        for i in range(5):
            heap.insert(i)
        print(heap.heap) # [0. 0, 1, 2, 3, 4]
        
        # instantiate a heap with a predefined array or set
        a = [i for i in range(5)]
        heap = Heap(a)
        print(heap.heap) # [0. 0, 1, 2, 3, 4]
        ```
        
        You can perform common heap operations such as `insert`, `getMin/deleteMin`:
        
        ```python
        minVal = heap.getMin() # value is still present in the heap
        minVal = heap.deleteMin() # value no longer present
        ```
        
        You can also delete an arbitrary value if present in the heap:
        
        ```python
        val = heap.deleteVal(3)
        ```
        
        The heap can also be iterated over:
        
        - The iteration order goes from smallest to largest if minHeap or largest to smallest if maxHeap
        
        ```python
        for val in heap:
            print(val)
        ```
        
        The heap can also be indexed:
        
        - In this case, `heap[0]` returns the smallest number and `heap[k]` returns the kth smallest
        
        Finally, the heap supports adding any kind of type, as long as you provide a `key` that provides a method of ordering values.
        
        - NOTE: by default, the key is an indentity function if the object is not indexable.
        - Otherwise, it is the first element of an object. For example x[0] for a list x.
        - If the key fails on an item, it will raise a `ValueError`
        
        ```python
        test = [((3, 4), 2.8284271247461903), ((8, 9), 9.899494936611665), ((10, 2), 9.0), ((0.1, 2), 0.9), ((10, 5), 9.486832980505138)]
        heap = Heap(test, key=lambda x:x[1]) # this will order by the second value
        
        # you can change the heaps key as follows (this will change the heap)
        heap.reconstructHeap(lambda x: 1/(x + 1))
        
        # outside of the heap, you can get access to the heap's key as folows:
        heap.applyKey(3)
        ```
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
