python 實現堆排序

2021-07-23 21:07:45 字數 669 閱讀 4011

#原理:迴圈陣列,依次構建最大堆,構建完以後第乙個元素就為最大值 swap 到最後乙個位置,

#繼續對 陣列中 0~ last-1 這個新陣列構建最大堆 依次類推 到最後構建完成

arr = [55, 67, 89, 12, 4, 6, 2, 34, 33, 12]

arrlen = int(len(arr))

#調整三個元素堆

defadjustthreeh

(arr,p,length):

l = 2*p+1

r = 2*p+2

maxv = arr[p]

if l<=length and maxvif r <=length and maxv#調整最大堆

defadjustmaxh

(length):

indexi =int(length/2)-1

while indexi>=0:

adjustthreeh(arr,indexi,length-1)

indexi-=1

temp = arr[length-1]

arr[length-1] = arr[0]

arr[0] = temp

indexo = 0

while indexo1

print(arr)

Python實現堆排序

usr bin env python coding utf 8 堆排序 class heap object 求給定下標i的父節點下標 defparent self,i if i 2 0 return i 2 1 else return i 2 求給定下標i的左孩子下標 defleft self,i ...

堆排序python實現

因為部門頻繁調整,半年多時間直接上級換了三個,之前一起工作的同事被調離的時候大頭沒有放我過去,說還有業務讓我支撐,在這次調整大頭也被調走了,現在小團隊的業務已經不再重要,人也都是一些老弱病殘,並且技術路線也與部門大團隊完全不同,因此,最近想換乙個公司或者部門來尋找更好的發展。當我前幾天到公司另乙個部...

堆排序 python實現

利用堆實現排序的簡單思路是,利用堆頂元素總是最大或者最小的性質,每次彈出乙個元素,直到堆空,則彈出元素形成的序列是有序的。但是為了節約儲存空間,我們直接將彈出的元素放在原堆記憶體的後面,這樣形成的最後形成的有序陣列的順序是和堆中資料的順序性是相反的 若是小根堆,排序後是由大到小的 若是大根堆,排序後...