zoukankan      html  css  js  c++  java
  • 堆的常用操作

    创建最小堆

    这里的import heaqp只能用来创建最小堆;创建最大堆可以把列表中的元素提取出来乘负1,然后再加入列表中进行堆化操作,这样提取出来的堆顶也就是列表中最大的元素
    最小堆的特性:二叉堆本质是一个二叉树,最小堆的堆顶是整个堆中最小的元素,同理,最大堆的堆顶就是整个堆中最大的元素。

    把列表堆化成堆

    heapq.heapify(list)

    添加元素

    heapq.heappush(minheap,10)

    删除元素

    heapq.heappop(minheap)

    遍历堆顶元素

            while len(minheap)!=0:
                print(heapq.heappop(minheap)) #100 110 1110
    

    完整代码

    import heapq
    
    class Test:
        def test(self):
            # create minheap;创建最小堆
            # minheap=[]
            minheap=[]
            heapq.heapify(minheap) # 把列表堆化成堆
            heapq.heappush(minheap,10)
            heapq.heappush(minheap,100)
            heapq.heappush(minheap,1)
            heapq.heappush(minheap,110)
            heapq.heappush(minheap,1110)
            print(minheap) # [1, 100, 10, 110, 1110]
            #peak
            print(minheap[0]) # 1
            # delete删除堆顶
            heapq.heappop(minheap) # 10
            # size
            len(minheap) 
            # 遍历堆顶元素
            while len(minheap)!=0:
                print(heapq.heappop(minheap)) #100 110 1110
    
    a = Test()
    a.test()
    # [99999]*-1为空列表
    # a.test([99999]*-1) 
    
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    10、xsl中import用法
    09、xsl中输出对应的列和值
    08、xsl中操作子节点带循环输出
    07、xsl中操作子节点
    06、xsl中choose进行多条件选择
    05、xsl中IF的用法
    04、xsl中对字段进行排序
    03、xsl中添加筛选条件
    02、xsl的for循环输出
    01、xsl样式表用网页输出
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15335351.html
Copyright © 2011-2022 走看看