您的位置:首页 > 其它

堆排序

2015-09-16 20:38 246 查看
//大根堆
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);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: