import random 
class MyHeap(object):
    def __init__(self,arr=[]):
        self.n=len(arr)
        self.list=arr
    def creat_heap(self):
        p.heapify(self.list) #建堆
        return self.list      
    def creat_heap1(self):
        parent_num=(self.n-1)/2
        while 0<=parent_num:
            self.siftdown(parent_num)
            parent_num-=1
        return self.list
    def siftdown(self,parent_num):
        i=parent_num
        j=2*parent_num+1
        temp=self.list[parent_num]
        while j<self.n :
            if j<self.n-1 and self.list[j+1]<self.list[j] : 
                j=j+1
            if temp<=self.list[j]:
                break    
            else:
                self.list[i]=self.list[j]
                i=j
                j=2*i+1
        self.list[i]=temp 
    def heap_sort(self): #堆排序
        b=[]
        for i in range(self.n):
             p.heapify(self.list)
             b.append(p.heappop(self.list))
        return b
        
a1=[random.randint(1,100) for i in range(10)]
print (a1)
myheap1=MyHeap(a1)
myheap2=MyHeap(a1)
print (myheap1.creat_heap())
print (myheap2.creat_heap1())
print (myheap1.heap_sort())

        


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容