算法导论—堆排序(python)
2015-04-05 19:36
190 查看
华电北风吹
天津大学任职计算与应用重点实验室
最后修改日期:2015/8/22
堆排序算法
先看第一个函数HeapAdjust,这个函数功能是在已经是构成堆的二叉树上,如果节点k数据变化了,对节点k进行修正,使之成为一个新的堆二叉树,n为数据长度。
HeapSort函数,利用上面的第一个函数构建堆二叉树,并利用上面的函数进行排序
测试函数
天津大学任职计算与应用重点实验室
最后修改日期:2015/8/22
堆排序算法
先看第一个函数HeapAdjust,这个函数功能是在已经是构成堆的二叉树上,如果节点k数据变化了,对节点k进行修正,使之成为一个新的堆二叉树,n为数据长度。
def HeapAdjust(lst,k,n): while(2*k+1<n): j=2*k+1 if j+1<n and lst[j]>lst[j+1]: j=j+1 if lst[j]<lst[k]: temp=lst[k] lst[k]=lst[j] lst[j]=temp k=j else: break return lst
HeapSort函数,利用上面的第一个函数构建堆二叉树,并利用上面的函数进行排序
def HeapSort(lst): n=len(lst) for i in range(int(n/2)-1,-1,-1): lst=HeapAdjust(lst,i,n) print(lst) for i in range(n-1,0,-1): temp=lst[0] lst[0]=lst[i] lst[i]=temp lst=HeapAdjust(lst,0,i) return lst
测试函数
a=[1,5,2,8,3,4,6,9,7] print(a) result=HeapSort(a) print(result)
相关文章推荐
- 算法导论堆排序python实现
- 《算法导论》(二)--堆排序
- Python天天美味(32) - python数据结构与算法之堆排序
- 算法导论笔记之堆排序
- 《算法导论》第6章 堆排序 (1)最大堆与堆排序
- 《算法导论》第6章 堆排序 (3)K路归并
- 算法导论笔记,堆排序
- 算法导论学习笔记——堆排序
- 《算法导论》第6章 堆排序 (1)最大堆与堆排序
- 《算法导论》第6章 堆排序 (1)最大堆与堆排序
- 算法导论之堆排序(堆排序、n*lgk 归并、杨氏矩阵)
- 算法导论第六章 堆排序C++源码(附图)
- 《算法导论》学习总结 --- 4.第六章(1) 堆排序
- 算法导论 堆排序
- 算法导论第六章 堆排序C++源码(附图)
- 排序算法集合(1)-Python实现的堆排序
- 算法导论习题6-堆排序
- 算法导论第六章:堆排序
- 算法导论——第二章——堆排序
- 《算法导论》第6章 堆排序 (3)K路归并