数据结构:堆排序(python版)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构:堆排序(python版)相关的知识,希望对你有一定的参考价值。

 1 #!/usr/bin/env python
 2 
 3 def heap_sort(elems):
 4     def siftdown(elems, e, begin, end):
 5         i, j = begin, begin*2+1
 6         while j < end:
 7             if j+1 < end and elems[j+1] < elems[j]:
 8                 j += 1
 9             if e < elems[j]:
10                 break
11             elems[i] = elems[j]
12             i, j = j, 2*j + 1
13         elems[i] = e
14 
15     end = len(elems)
16     for i in range(end//2, -1, -1):
17         siftdown(elems, elems[i], i, end)
18     for i in range((end-1), 0, -1):
19         e = elems[i]
20         elems[i] = elems[0]
21         siftdown(elems, e, 0, i)
22 
23 if __name__ == "__main__":
24     l = [5,3,9,6,2,7,1,4,8]
25     heap_sort(l)
26     print(l)

 

以上是关于数据结构:堆排序(python版)的主要内容,如果未能解决你的问题,请参考以下文章

堆排序-代码版

Java版高级数据结构堆树&堆排序

堆排序及java版实现

Java排序算法 - 堆排序的代码

python代码实现堆排序

10-9-堆排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版