解决排序的另一种途径
我之前的文章解析过排序的几种方法,这次的堆排序原理很好理解,但代码的实现并不简单,我觉得不适合入门。
原理
堆排序的实现实际上是把根节点提取出来,不管是最大堆还是最小堆,根节点永远是极值。
组成
①一个交换函数——在代码中实现交换。
②向下调整函数——它的作用是调整函数使它符合堆的特点。
③一个建立堆的函数
④删除函数——每次删除极值。
⑤主函数
例题
将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