堆排序
来源:互联网 发布:相片日历制作软件 编辑:程序博客网 时间:2024/05/18 00:02
INPUT
6
5 9 8 4 6 88
OUTPUT
4 5 6 8 9 88
#include<stdio.h>int h[101];int n;void siftdown(int i);void swap(int x,int y);void creat();int deletemin();void swap(int x,int y)//交换两个数{int t;t=h[x];h[x]=h[y];h[y]=t;return;}void siftdown(int i)//向下调整函数{int t,flag=0;//flag用来标记是否需要交换while(i*2<=n&&flag==0){if(h[i]>h[i*2])//当父节点的值比左子节点大时t=i*2;elset=i;if(i*2+1<=n)//当存在右子节点时再进行比较{if(h[t]>h[i*2+1])t=i*2+1;}if(t!=i){swap(t,i);i=t;}else{flag=1;}}return;}void creat()//建堆{int i;for(i=n/2;i>=1;i--){siftdown(i);}return;}int deletemin()//删除最小值的操作{int t;t=h[1];h[1]=h[n];n--;siftdown(1);return t;}int main(){int i,num;scanf("%d",&num);for(i=1;i<=num;i++){scanf("%d",&h[i]);//输入堆里面的数字}n=num;creat();for(i=1;i<=num;i++){printf("%d ",deletemin());}return 0;}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 阶段一:2017年最新Elasticsearch入门核心知识视频教程
- storm与spark streaming反压机制
- Pycharm 2017 激活码
- linux环境jdk安装
- ActiveReports 报表控件V12新特性 -- 无需ETL处理,即可实现跨数据源分析数据
- 堆排序
- JndiObjectFactoryBean 配置数据源
- 媒体查询使用和设备像素比
- Android App节日换肤
- 百度UEditor的简单使用,JSP页面的表单中的内容后台获取和前端配置-结合项目使用
- 产品开发
- libmemcached的C-API访问memcached server
- 2018年迎春杯复赛入围名单(六年级)
- Java8 Stream API