Python 实现堆排序
2017-01-15 19:57
513 查看
def heapadjust(seq, node, size): #adjust heap lchild = 2 * node + 1 rchild = 2 * node + 2 maxcode = node if node <= size / 2 - 1: #if lefthchild or rightchild > root node, exchange the value if lchild <= size - 1 and seq[lchild] > seq[maxcode]: maxcode = lchild if rchild <= size - 1 and seq[rchild] > seq[maxcode]: maxcode = rchild if maxcode != node: tem = seq[node] seq[node] = seq[maxcode] seq[maxcode] = tem heapadjust(seq, maxcode, size) #adjust the heap which root is maxcode def buildheap(seq, size): #build heap for i in range(size / 2 - 1, -1, -1): heapadjust(seq, i, size) def heapsort(seq, size): # we can get the maximum value in each loop and put it at the end of array buildheap(seq, size) for j in range(size - 1, -1, -1): tem = seq[0] seq[0] = seq[j] seq[j] = tem buildheap(seq, j) return seq if __name__ == '__main__': l = [0, 16, 20, 3, 11, 17, 8] print heapsort(l, len(l))
相关文章推荐
- 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实现(五)堆排序