import random
def createdata(size):
return [random.randint(0, 100) for x in range(size)]
def maxheap(arr,i,size):
left, right = 2*i+1, 2*i+2
largest = left if left < size and arr[left] > arr[i] else i
largest = right if right < size and arr[right] > arr[largest] else largest
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
maxheap(arr, largest,size)
def buildmaxheap(arr):
for i in range(len(arr)/2,-1,-1):
maxheap(arr, i, len(arr))
def heapsort(arr, size):
buildmaxheap(arr)
for i in range(len(arr)-1, -1, -1):
arr[0], arr[i] = arr[i], arr[0]
size -=1
maxheap(arr,0,size)
if __name__ == '__main__':
arr = createdata(10)
print arr
heapsort(arr,len(arr))
print arr
堆排序(Python)
最新推荐文章于 2020-12-07 11:06:58 发布