代码改变世界

随笔档案-2012年2月14日

《算法导论》第6章 堆排序 (1)最大堆与堆排序

2012-02-14 22:40 by htc开发, 185 阅读, 收藏,
摘要: 6.1 堆“堆”这个词最初是在堆排序中提出的,但后来就逐渐指“废料收集存储区”,像Lisp和Java中提供的那样。(二叉)堆是一种数组对象,可以被视为一棵完全二叉树。length[A]是数组中的元素个数,heap-size[A]是存放在A中堆的元素个数。树的根是A[1]。堆的重要函数:max_heapifybuild_max_heapheapsort6.2 - 6.4 最大堆// 将LEFT和RIGHT定义为宏(避免小函数调用的开销)// 注意宏的定义要加上括号避免文本替换时运算符问题#include <stdio.h>#define LEFT(i) (2 * (i))#defin 阅读全文