//大根堆
void HeapAdjust(int H[],int s, int m)
{
int rc = H[s];
for(int i=2*s;i<m;i*=2)
{
if (H[i]>H[i+1])
i++;
if(H[s]<H[i])
{
H[s] = H[i];
s = i;
}
else break;
}
H[s] = rc;
}
void HeapSort(int H[],int length)
{
for (int i = length/2;i>0;i++)
{
HeapAdjust(H,i,length);
}
for(int j = length; j>1;j--)
{
H[1] = H[j];
HeapAdjust(H,1,j-1);
}
}
堆排序
最新推荐文章于 2023-05-28 11:19:59 发布