堆排序的实现

 关于堆排序,堆排序就是用二叉树的逻辑进行排序,实际并不是二叉树,在进行堆排序时,要满足左右树都是小堆的情况下才能用,那么,如果左右树不是小堆的话,我们是不是要排成小堆的样子呢,那么,正式开始堆排序的实现:

  首先我们用图来理解一下:

  首先,我们可以看到,我们将一个数组画成了一个二叉树的样子,一棵树就是一个堆,显然,这些堆都是乱的,那么我们该如何进行排序呢,首先我们要进行排堆,排成左右子树都是小堆的堆,比如:

    经过排堆,我们就得到了这样的一个堆,可以看到,第一个元素就是最小的数,左右树都是小堆,那么,我们排序出来应该是从大到小还是从小到大呢,很多人都以为是从小到大吧,其实不然,小堆排出来是从大到小,大家请看:

那这是怎么做到的呢,大家请看代码,首先是头文件以及函数声明:

 

  再到排堆:

 

  再到交换:

 

  再到整体排序:

  然后是主函数:

 最后就是打印了:

    今天的堆排序就到此为止啦,后面还会继续更新快速排序等排序算法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值