排序算法-堆排序

本文介绍了堆排序算法的基本思想,包括如何构建最大堆以及通过迭代和递归方式实现堆排序的过程。堆排序的时间复杂度分析表明,它具有较好的平均性能,但不适合元素量较少的排序场景。
摘要由CSDN通过智能技术生成
/*
堆排序的基本思想:将所有元素初始化一个最大堆,然后将第一个元素即最大元素与最后一个元素交换;
再对前n-1个元素调整为一个最大堆,就这样依次进行,每次都是把最大元素放到最后边。
*/
void MaxHeapify(int*list,int size,int root)
{
    int lChild=2*(root+1)-1,rChild=lChild+1;//根节点的左右孩子节点
    while(rChild<size)//如果右孩子节点存在
    {
        if(list[root]>=list[lChild]&&list[root]>=list[rChild])//如果根节点大于左右孩子节点表明以root为根节点的树已经为最大堆
            return;
        if(list[lChild]>list[rChild])//如果左孩子大,则选左孩子作为根节点
        {
            int temp=list[lChild];
            list[lChild]=list[root];
            list[root]=temp;
            root=lChild;
        }
        else//右孩子大
        {
            int temp=list[rChild];
            list[rChild]=list[root];
            list[root]=temp;
            root=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值