class HeapSort :
def __init__(self):
self.arr = [4,6,8,5,9]
self.arr = self.sort(self.arr)
print(self.arr)
def sort(self,arr):
for i in range(len(arr)//2-1,-1,-1):
arr=self.adjustHeap(arr,i,len(arr))
for j in range(len(arr)-1,-1,-1):
temp=arr[0]
arr[0] = arr[j]
arr[j] = temp
arr = self.adjustHeap(arr,0,j)
return arr
'''
* 调整大顶堆(仅是调整过程,建立在大顶堆已构建的基础上)
'''
def adjustHeap(self,arr,i,length):
temp = arr[i]
k=i*2+1
while k<length:
if k+1<length and arr[k]<arr[k+1]:
k+=1
if arr[k] > temp:
arr[i] = arr[k]
i = k
else:
break
k=k*2+1
arr[i] = temp
return arr
A = HeapSort()