堆排序
来源:互联网 发布:mac 彻底关机 编辑:程序博客网 时间:2024/06/03 16:03
#include<stdio.h>void AdjustHeap(int A[], int i, int n) { int j, tmp, tmpid; for( ; i * 2 + 1 < n; i++) { if(i * 2 + 2 >= n) { tmp = A[i * 2 + 1]; tmpid = i * 2 + 1; } else if (A[i * 2 + 1] > A[i * 2 + 2]) { tmp = A[i * 2 + 1]; tmpid = i * 2 + 1; } else { tmp = A[i * 2 + 2]; tmpid = i * 2 + 2; } if(tmp > A[i]) { A[tmpid] = A[i]; A[i] = tmp; } }}void MakeHeap(int A[], int n) { int i; for(i = n/2; i >= 0; i--) { AdjustHeap(A, i, n); }}void HeapSort(int A[], int n) { int i, tmp; for(i = 0; i < n; i++) { tmp = A[n - i - 1]; A[n - i - 1] = A[0]; A[0] = tmp; AdjustHeap(A, 0, n - i - 1); }}void main() { int A[] = {2, 4, 5, 6, 7, 8, 1, 3}; int n = 8; MakeHeap(A, n); int i; for(i = 0; i < n; i++) printf("%d ", A[i]); printf("\n"); HeapSort(A, n); for(i = 0; i < n; i++) printf("%d ", A[i]); printf("\n");}
0 0
- 堆及堆排序
- 堆/堆排序特点
- 【二叉堆、堆排序】
- 二叉堆 & 堆排序
- 二叉堆 & 堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆与堆排序
- 堆和堆排序
- 堆排序(最大堆)
- 堆和堆排序
- 堆和堆排序
- 堆及堆排序
- 堆和堆排序
- 堆与堆排序
- LUA string库详解
- js获取元素
- Maven Setting.xml 配置说明
- Linux常用命令大全100条
- 返回上一级出现nested pop animation can result in corrupted navigation bar
- 堆排序
- 关于Debug和Release之本质区别的讨论(主要针对VC6.0和VS2003.net编译工具而言)
- SplitContainerControl重绘制分隔符
- CentOS下一键安装OpenStack
- bit32位运算库
- 万年历使用总结
- gcc 相关知识
- 菏泽专业男科医院
- 年终总结之搜房网面试题(四)