python 实现堆排序
2016-10-20 15:14
246 查看
#原理:循环数组,依次构建最大堆,构建完以后第一个元素就为最大值 swap 到最后一个位置, #继续对 数组中 0~ last-1 这个新数组构建最大堆 依次类推 到最后构建完成 arr = [55, 67, 89, 12, 4, 6, 2, 34, 33, 12] arrLen = int(len(arr)) #调整三个元素堆 def adjustThreeH(arr,p,length): l = 2*p+1 r = 2*p+2 maxV = arr[p] if l<=length and maxV<arr[l]: maxV = arr[l] arr[l] = arr[p] arr[p] = maxV if r <=length and maxV<arr[r]: maxV = arr[r] arr[r] = arr[p] arr[p] = maxV #调整最大堆 def adjustMaxH(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 indexO<arrLen: adjustMaxH(arrLen-indexO) indexO+=1 print(arr)
相关文章推荐
- python算法--堆排序详细实现
- Python实现 [堆] [堆排序]
- 利用Python实现堆排序
- Python实现二叉树存储结构的堆排序
- Python 实现堆排序
- 排序算法集合(1)-Python实现的堆排序
- 排序算法三:堆排序基本原理以及Python实现
- Python实现堆排序的方法详解
- 堆排序(python实现)
- 排序算法C++ && Python实现---堆排序
- python算法实现系列-堆排序
- Python 快速排序 堆排序——Python实现一些算法持续更新
- 快速排序,归并排序,堆排序python实现
- Python实现堆排序的方法详解
- [151225] Python3 实现最大堆、堆排序,解决TopK问题
- heapsort堆排序(3种语言实现 c/java/python)
- 堆排序PYTHON实现
- Python实现堆排序
- 用Python实现八大排序算法--堆排序
- 八大排序算法的python实现(五)堆排序