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())
网友评论