算法导论堆排序python实现
2015-03-09 00:03
232 查看
#-*-coding:utf-8-*- def max_heap(A, i, heapsize): largest = -1 while True: left = 2*i+1 right = 2*i + 2 if left<heapsize and A[i]<A[left]: largest=left else: largest=i if right<heapsize and A[largest]<A[right]: largest=right if largest is not i: A[largest],A[i] = A[i],A[largest] i=largest else: break def build_max_heap(A): n = len(A) for i in range(int(n/2)-1,-1,-1): max_heap(A, i, n) def heap_sort(A): build_max_heap(A) n = len(A) for i in range(n-1,-1,-1): A[0],A[i]=A[i],A[0] max_heap(A,0, i) A=[1,3,8,6,1,4,6,4,0] heap_sort(A) print A
相关文章推荐
- 算法导论 习题6.2-5 用迭代法实现堆排序
- 算法导论Java实现-堆排序(6.4章节)
- 堆排序PYTHON实现
- Python 快速排序 堆排序——Python实现一些算法持续更新
- 算法导论 2.3-7 python实现
- 排序算法集合(1)-Python实现的堆排序
- 算法导论,堆排序,c实现。
- 算法导论(第三版)第六章 堆排序的全部实现(堆排序,优先队列)
- python实现堆排序的三种方式
- 算法导论-----------堆排序研究 (堆排序原理及算法实现(最大堆))
- 《算法导论》CLRS算法C++实现(三)P75 堆排序
- python算法--堆排序详细实现
- 算法导论(Introduction to Algorithms)之堆排序(C语言实现)
- 用调整法和插入法建堆的Python实现,不同建堆方式对堆排序性能的影响
- Python实现 [堆] [堆排序]
- 《算法导论的Java实现》 7 堆排序
- 《算法导论》CLRS算法C++实现(三)P75 堆排序
- heapsort堆排序(3种语言实现 c/java/python)
- 算法导论题解-python语言实现-第二章
- 算法导论-第六章-堆排序:基于最大堆的排序C++实现