示例#1
0
文件: mediana.py 项目: kitz99/misc
from max_heap import MaxHeap
from min_heap import MinHeap

if __name__ == '__main__':
    sup = MaxHeap([])  # MAX_HEAP
    inf = MinHeap([])  # MIN_HEAP
    n = 0
    while True:
        # citesc numarul pe care vreau sa il inserez
        x = input("Numar: ")
        x = int(x)
        sup.insert(x)  # inseram in max-heap
        if n % 2 == 0:
            if inf.heap_size > 0:  # daca am elemente in minheap
                if sup.max() > inf.min(
                ):  # daca radacina maxHeap-ului > radacina minHeapului
                    # extrag radacinile si le inserez in cruce
                    toMin = sup.pop_max()
                    toMax = inf.pop_min()
                    sup.insert(toMax)
                    inf.insert(toMin)
        else:  # daca numarul de numere e impar
            toMin = sup.pop_max()
            inf.insert(toMin)
            # extrag radacina maxHeap-ului si o inserez in minHeap

        n += 1  # crestem numarul de elemente procesate

        # getting the median
        if n % 2 == 0:
            print(sup.max() + inf.min()) / 2.0
示例#2
0
from min_heap import MinHeap

heap = MinHeap()
heap.insert(5)
heap.insert(10)
heap.insert(1)
heap.insert(4)
heap.insert(7)
heap.insert(2)
print(heap)
print(heap.min())
print(heap.remove())
print(heap)
print(heap.remove())
print(heap)