堆排序

来源:互联网 发布:开心消消乐未联接网络 编辑:程序博客网 时间:2024/05/21 07:01

算法分类:

数据结构


算法原理:

对于非降序排列而言:(升序同理)

利用最大最小堆的性质,每次对数组生成最大堆后即将根节点放置到数组末尾,并对剩余数组继续生成最大堆。


算法时间复杂度:

时间复杂度:O(nlogn)

空间复杂度:O(1)


代码实现:hdu1040

#include <iostream>using namespace std;int data[1005];void siftDown(int index, int n) {int k = index;while (k*2 <= n) {k *= 2;if (k < n && data[k+1] > data[k]) {++ k;}if (data[k/2] < data[k]) {swap(data[k/2],data[k]);} else {break;}}};void makeHeap(int n) {for (int i = n/2; i > 0; -- i)siftDown(i, n);};void heapSort(int n) {makeHeap( n);for (int i = n; i > 0; -- i) {swap(data[1], data[i]);siftDown(1, i-1);}};int main(){int T, n;scanf("%d",&T);while (T --) {scanf("%d",&n);for (int i = 1; i <= n; ++ i) {scanf("%d",&data[i]);}heapSort( n);for (int i = 1; i < n; ++ i) {printf("%d ",data[i]);}printf("%d\n",data[n]);}}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网易邮箱提示被修复怎么办 小孩屁股烫红了怎么办 8岁近视400度怎么办 部队体能差的人怎么办 上环5天同房了怎么办 肾结石有3mm了怎么办 4*3mm肾结石好痛怎么办 做完肾结石积水后迟续发烧怎么办 血糖高有肾结石反复发高烧怎么办 肾里面有小结石怎么办 大于2厘米的结石怎么办 双肾结石肾盏扩张怎么办 边防消防警卫部队改革义务兵怎么办 汽车年检尾气复检不合格怎么办 车辆年检尾气不合格复检怎么办? 在瓜子上买车复检有问题怎么办 更换车壳车架号怎么办 吸完甲醛的绿萝怎么办 如果公务员复检不合格有异议怎么办 国考公务员政审没有毕业证怎么办 打针硬块4年不消怎么办 外墙补起来难看不好卖怎么办 杠精现实中应该怎么办 发现记者报道假新闻怎么办 2018消防兵转制到期士官怎么办 小孩睡觉老想着军训怎么办 1岁宝宝太老实了怎么办 上课小孩很调皮不听话怎么办 初中学生上课爱说话调皮怎么办 8个月婴儿疝气怎么办 头部疤痕不长发怎么办呢 有纹身想去当兵怎么办 在部队干活的钱怎么办 新兵5公里超过标准时间怎么办 17个月婴儿裹手怎么办 7个月婴儿裹手怎么办 俩月孩子裹手怎么办 婴儿 3个月 裹手怎么办 一岁宝宝裹手怎么办 5个月宝宝裹手怎么办 不想让孩子裹手怎么办