堆排序
来源:互联网 发布:加油站软件app 编辑:程序博客网 时间:2024/05/22 08:03
百科解释
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值,即A[PARENT[i]] >= A[i]。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。
个人理解
适用于多数据操作或多数据排序的时候。
代码
#include<cmath>#define ll long longvoid up(ll p){ while ((p>1)&&(f[p]>f[p/2])) { swap(f[p],f[p/2]); p/=2; }}void down(ll p){ ll q; while ((p*2<=num)&&(f[p*2]>=f[p])||(p*2+1<=num)&&(f[p*2+1]>=f[p])) { q=p*2; if (f[p*2+1]>=f[p*2]) q++; swap(f[p],f[q]); p=q; }}void insert(ll t){ num++; f[num]=t; up(num);}void dele(ll p){ if (f[num]<f[p]) { f[p]=f[num]; num--; down(p); } else { f[p]=f[num]; num--; up(p); }}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 洛谷P1101 单词方阵
- Filebeat的高级配置-Filebeat部分
- 【图像识别】【转】支持向量机通俗导论
- Linux之find命令
- Java 实现在word或者pdf上 一页纸打印六块区域数据
- 堆排序
- 针对Logstash吞吐量一次优化
- Android自定义控件系列(一)—Button七十二变
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- poj2195——Going Home(最小费用最大流)
- 【清华集训2014】mex
- 20161028 数字游戏
- sikulix document 学习笔记(二)——SikuliX是怎么运行的
- Python爬虫学习,抓取网页上的天气信息