Пример #1
0
def test_remove():
    n = 50
    a = np.random.choice(1000, n, replace=True).tolist()
    heap = MinHeap(a, modifiable=True)
    rm = np.random.choice(n, 10, replace=False).tolist()
    if n-1 not in rm:
        rm.append(n-1)
    nodes = [heap.L[i] for i in rm]
    for node in nodes:
        heap.remove(node)
    b = sorted(heap.L)
    c = []
    while heap:
        c.append(heap.pop())
    assert b == c
Пример #2
0
def test_update():
    n = 50
    a = np.random.choice(1000, n, replace=True).tolist()
    heap = MinHeap(a, modifiable=True)
    u_id = np.random.choice(n, 10, replace=False).tolist()
    u_val = np.random.choice(1000, 10, replace=True).tolist()
    if n-1 not in u_id:
        u_id.append(n-1)
        u_val.append(np.random.randint(1000))
    nodes = [heap.L[i] for i in u_id]
    for node, newkey in zip(nodes, u_val):
        heap.update(node, newkey)
    b = sorted(heap.L)
    c = []
    while heap:
        c.append(heap.pop())
    assert b == c
Пример #3
0
def test_min_heap():
    a = np.random.choice(1000, 200, replace=True).tolist()
    b = sorted(a)
    """ test insert """
    heap = MinHeap()
    for x in a:
        heap.insert(x)
    c = []
    while heap:
        c.append(heap.pop().key)
    assert b == c
    """ test heapify """
    heap = MinHeap(a)
    c = []
    while heap:
        c.append(heap.pop().key)
    assert b == c