空白AdjustHeap (int *, int, int根)//建最大堆
{
如果(==NULL)
{
返回;
}
int孩子=根* 2 + 1;
, (child<大小)
{
如果((孩子+ 1)& lt;大小,,(孩子)& lt;[孩子+ 1])
{
+ +孩子;
}
如果((根)& lt;[孩子])
{
交换((孩子),[根]);
}
根=孩子;
子=根* 2 + 1,
}
}
空白Adjustdown (int *, int, int根)//向下调整,将堆顶的数据换到堆底后把长度减一;
{,,,,,,,,,,,,,,//再将堆顶数据向下比较,建成最大堆,,,
int孩子=根* 2 + 1;
,(孩子& lt;大小)
{
如果((孩子+ 1)& lt;大小,,(孩子)& lt;[孩子+ 1])
{
+ +孩子;
}
如果((孩子)比;(根))
{
交换((孩子),[根]);
}
根=孩子;
子=根* 2 + 1,
}
}
空白堆排序(int *, int长度)
{
如果(==NULL | | & lt;长度=0)
{
返回;
}
(int i=(- 2)长度/2;我在=0;我——)
{
AdjustHeap(长度,i);
}
(int i=- 1长度;我在;0;我——)
{
int tmp=[0];
[0]=[我],
[我]=tmp;
Adjustdown(我,0),
}
}