堆排序
来源:互联网 发布:唐小僧 卓软件 编辑:程序博客网 时间:2024/06/06 03:22
原文出处:http://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.html
#include<iostream>using namespace std;typedef int ElemType;void HeapAdjust(ElemType H[], int start, int end){ElemType temp = H[start];for (int i = 2 * start + 1; i <= end; i *= 2){//因为假设根结点的序号为0而不是1,所以i结点左孩子和右孩子分别为2i+1和2i+2if (i<end && H[i]<H[i + 1])//左右孩子的比较{++i;//i为较大的记录的下标}if (temp > H[i])//左右孩子中获胜者与父亲的比较{break;}//将孩子结点上位,则以孩子结点的位置进行下一轮的筛选H[start] = H[i];start = i;}H[start] = temp; //插入最开始不和谐的元素}void HeapSort(ElemType A[], int n){//先建立大顶堆for (int i = n / 2; i >= 0; --i){HeapAdjust(A, i, n);}//进行排序for (int i = n - 1; i>0; --i){//最后一个元素和第一元素进行交换ElemType temp = A[i];A[i] = A[0];A[0] = temp;//然后将剩下的无序元素继续调整为大顶堆HeapAdjust(A, 0, i - 1);}}int main(){int a[100];for (int i = 0; i < 10; i++)std::cin >> a[i];HeapSort(a, 10);for (int i = 0; i < 10; i++)cout << a[i] << ' ';while (1);}
阅读全文
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- 核心组件之service
- Elasticsearch 乐观锁处理
- 黑匣子
- 1.面试题目汇总-嵌入式篇
- python开发部署时新增数据库中表的方法
- 堆排序
- 案例:Shell脚本检测网站url是否正常运行
- 【NYOJ-94】cigarettes
- 明明在包含目录里包含了cv.h的路径,为什么还是报错error C1083: 无法打开包括文件: “opencv/cv.h”: No such file or directory
- 布隆过滤器
- 挖洞经验 | 看我如何综合利用4个漏洞实现GitHub Enterprise远程代码执行
- java求最大公约数的两种方法
- 关系型数据库的三范式
- js中的事件