python 实现堆排序算法代码
2013-01-26 10:00
459 查看
#!/usr/bin/python
import sys
def left_child(node):
return node * 2 + 1
def right_child(node):
return node * 2 + 2
def parent(node):
if (node % 2):
return (i - 1) / 2
else:
return (i - 2) / 2
def max_heapify(array, i, heap_size):
l = left_child(i)
r = right_child(i)
largest = i
if l < heap_size and array[l] > array[i]:
largest = l
if r < heap_size and array[r] > array[largest]:
largest = r
if largest != i:
array[i], array[largest] = array[largest], array[i]
max_heapify(array, largest, heap_size)
def build_max_heap(array):
for i in range(len(array) / 2, -1, -1):
max_heapify(array, i, len(array))
def heap_sort(array):
build_max_heap(array)
for i in range(len(array) - 1, 0, -1):
array[0], array[i] = array[i], array[0]
max_heapify(array, 0, i)
if __name__ == "__main__":
array = [0, 2, 6, 98, 34, -5, 23, 11, 89, 100, 7]
heap_sort(array)
for a in array:
sys.stdout.write("%d " % a)
import sys
def left_child(node):
return node * 2 + 1
def right_child(node):
return node * 2 + 2
def parent(node):
if (node % 2):
return (i - 1) / 2
else:
return (i - 2) / 2
def max_heapify(array, i, heap_size):
l = left_child(i)
r = right_child(i)
largest = i
if l < heap_size and array[l] > array[i]:
largest = l
if r < heap_size and array[r] > array[largest]:
largest = r
if largest != i:
array[i], array[largest] = array[largest], array[i]
max_heapify(array, largest, heap_size)
def build_max_heap(array):
for i in range(len(array) / 2, -1, -1):
max_heapify(array, i, len(array))
def heap_sort(array):
build_max_heap(array)
for i in range(len(array) - 1, 0, -1):
array[0], array[i] = array[i], array[0]
max_heapify(array, 0, i)
if __name__ == "__main__":
array = [0, 2, 6, 98, 34, -5, 23, 11, 89, 100, 7]
heap_sort(array)
for a in array:
sys.stdout.write("%d " % a)
相关文章推荐
- python 实现堆排序算法代码
- python 实现堆排序算法代码
- Python实现爬虫从网络上下载文档的实例代码
- 40行python代码,搭建一个网站并实现用户登陆功能(附源码下载)
- **请写出一段Python代码实现删除一个list里面的重复元素
- 决策树原理实例(python代码实现)
- 《大话设计模式》Python版代码实现
- 查看python调用c++代码的代码实现位于那个cpp文件
- 使用python实现rsa算法代码
- Python交互环境下实现输入代码
- 基于python、dlib和opencv的200行代码实现的换脸
- 300 行 python 代码的轻量级 HTTPServer 实现文件上传下载
- 代码注释率统计的Python及Java实现
- Python之三十行代码实现简易计算器
- python实现多线程采集的2个代码例子
- 手把手教你用1行代码实现人脸识别 -- Python Face_recognition
- Python中的文件和目录操作实现代码
- python 的列表遍历删除实现代码
- 最近在研究enigma2的代码,那叫个庞大,C/C++写中间件,上层应用全部用python实现,可以学习一下plugin的实现机制了.
- 《大话设计模式》Python版代码实现