算法 排序 python 实现--堆排序
2012-06-05 18:35
751 查看
堆排序
#!/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)
相关文章推荐
- Python 快速排序 堆排序——Python实现一些算法持续更新
- 算法基础:排序(四)——二叉堆、优先队列、堆排序——Python实现
- 算法基础:排序(四)——二叉堆、优先队列、堆排序——Python实现
- 快速排序,归并排序,堆排序python实现
- python算法实现系列-堆排序
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- python算法--堆排序详细实现
- 【算法】排序 (一):插入排序&希尔排序&选择排序&堆排序(C++实现)
- 史上最简单!冒泡、选择排序的Python实现及算法优化详解
- 直接排序算法python实现
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- python算法--置换选择排序详细实现
- python实现基础排序算法之(插入排序)
- Python实现各类数据结构和算法---直接选择排序
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- Python实现的选择排序算法示例
- python 算法 排序实现快速排序
- 【排序】用Python实现八大排序算法--堆排序
- python实现排序算法三:插入排序