def heapify(arr,n,i): #to form max heap
highest=i
left=(2*i)+1 #left node of the parent
right=left+1 #right node of the parent
#extracting the largest of the three
#i.e. parent and its children
if left<n and arr[i]<arr[left]:
highest=left
if right<n and arr[highest]<arr[right]:
highest=right
#if the chosen parent is not the highest
#swap it with the largest
if highest!=i:
#swapping the largest
arr[i],arr[highest]=arr[highest],arr[i]
heapify(arr,n,highest)
def heapSort(arr):
n=len(arr)
#n//2 gives the first parent node
#every node after n//2 is a leaf node.
for i in range(n//2,-1,-1):
heapify(arr,n,i)
#heapifying after deletion operation
for i in range(n-1,0,-1):
#swapping the last element with the root
arr[0],arr[i]=arr[i],arr[0]
heapify(arr,i,0)
arr = [60,50,45,40,35,20,25,30]
heapSort(arr)
n = len(arr)
print("Sorted array is: ")
for i in range(n):
print("%d " % arr[i], end='')# your code goes here
ZGVmIGhlYXBpZnkoYXJyLG4saSk6ICN0byBmb3JtIG1heCBoZWFwCiAgICBoaWdoZXN0PWkKICAgIGxlZnQ9KDIqaSkrMSAjbGVmdCBub2RlIG9mIHRoZSBwYXJlbnQKICAgIHJpZ2h0PWxlZnQrMSAjcmlnaHQgbm9kZSBvZiB0aGUgcGFyZW50CgogICAgI2V4dHJhY3RpbmcgdGhlIGxhcmdlc3Qgb2YgdGhlIHRocmVlCiAgICAjaS5lLiBwYXJlbnQgYW5kIGl0cyBjaGlsZHJlbgogICAgaWYgbGVmdDxuIGFuZCBhcnJbaV08YXJyW2xlZnRdOgogICAgICAgIGhpZ2hlc3Q9bGVmdAogICAgaWYgcmlnaHQ8biBhbmQgYXJyW2hpZ2hlc3RdPGFycltyaWdodF06CiAgICAgICAgaGlnaGVzdD1yaWdodAoKICAgICNpZiB0aGUgY2hvc2VuIHBhcmVudCBpcyBub3QgdGhlIGhpZ2hlc3QKICAgICNzd2FwIGl0IHdpdGggdGhlIGxhcmdlc3QKICAgIGlmIGhpZ2hlc3QhPWk6CiAgICAgICAgI3N3YXBwaW5nIHRoZSBsYXJnZXN0CiAgICAgICAgYXJyW2ldLGFycltoaWdoZXN0XT1hcnJbaGlnaGVzdF0sYXJyW2ldCiAgICAgICAgaGVhcGlmeShhcnIsbixoaWdoZXN0KQoKZGVmIGhlYXBTb3J0KGFycik6CiAgICBuPWxlbihhcnIpCiAgICAjbi8vMiBnaXZlcyB0aGUgZmlyc3QgcGFyZW50IG5vZGUKICAgICNldmVyeSBub2RlIGFmdGVyIG4vLzIgaXMgYSBsZWFmIG5vZGUuCiAgICBmb3IgaSBpbiByYW5nZShuLy8yLC0xLC0xKToKICAgICAgICBoZWFwaWZ5KGFycixuLGkpCiAgICAKICAgICNoZWFwaWZ5aW5nIGFmdGVyIGRlbGV0aW9uIG9wZXJhdGlvbgogICAgZm9yIGkgaW4gcmFuZ2Uobi0xLDAsLTEpOgogICAgICAgICNzd2FwcGluZyB0aGUgbGFzdCBlbGVtZW50IHdpdGggdGhlIHJvb3QKICAgICAgICBhcnJbMF0sYXJyW2ldPWFycltpXSxhcnJbMF0gCiAgICAgICAgaGVhcGlmeShhcnIsaSwwKQoKYXJyID0gWzYwLDUwLDQ1LDQwLDM1LDIwLDI1LDMwXQpoZWFwU29ydChhcnIpCm4gPSBsZW4oYXJyKQpwcmludCgiU29ydGVkIGFycmF5IGlzOiAiKSAgICAKZm9yIGkgaW4gcmFuZ2Uobik6CiAgICBwcmludCgiJWQgIiAlIGFycltpXSwgZW5kPScnKSMgeW91ciBjb2RlIGdvZXMgaGVyZQ==