defheap_sort(elems):defsiftdown(elems,e,begin,end):"""将数据插入到合适的位置,作为主函数的内部函数"""i,j &#61; begin,begin*2&#43;1while j < end :if j &#43;1< end and elems[j&#43;1]< elems[j]:j &#43;&#61;1if e < elems[j]:breakelems[i]&#61; elems[j]i , j &#61; j,2*j&#43;1elems[i]&#61; eend &#61;len(elems)# 构建小根堆for i inrange(end//2,-1,-1):siftdown(elems,elems[i],i,end)# 依次取出最小的元素print(&#39;依次取出最小的元素&#39;)for i inrange((end-1),0,-1):e &#61; elems[i]elems[i]&#61; elems[0]siftdown(elems,e,0,i)#调整结构print(elems[0])# end &#61; 9 # for i in range(end//2,-1,-1): # print(i,end &#61; &#39;&#39;) # # print(&#39;&#39;) # for i in range((end - 1), 0, -1): # print(i,end &#61; &#39;&#39;)elems &#61;[1,6,8,0,3,5,2] heap_sort(elems)