堆排序(解决排序问题)

堆排序是一种解决排序问题的算法,通过建立最大堆或最小堆来找到序列中的极值。该算法包括交换函数、向下调整、建立堆、删除和主函数等关键步骤。虽然原理直观,但代码实现相对复杂,不推荐初学者直接上手。举例说明,例如对一组数值进行排序:99、5、36、7、22、17、46、12、2、19、25、28、1、92。
摘要由CSDN通过智能技术生成

解决排序的另一种途径

我之前的文章解析过排序的几种方法,这次的堆排序原理很好理解,但代码的实现并不简单,我觉得不适合入门。

原理

堆排序的实现实际上是把根节点提取出来,不管是最大堆还是最小堆,根节点永远是极值。

组成

①一个交换函数——在代码中实现交换。
②向下调整函数——它的作用是调整函数使它符合堆的特点。
③一个建立堆的函数
④删除函数——每次删除极值。
⑤主函数

例题

将99、5、36、7、22、17、46、12、2、19、25、28、1、92排序

代码

#include<stdio.h>
int h[101];//用来存放对的数组
int n;//用来记录堆中元素个数
//交换函数
void swap(int x,int y)
  {
   
     int t;
     t=h[x];
     h[x]=h[y];
     h[y]=t;
     return;
  }
    //下调函数
void siftdown
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值