【ACM模板】堆排序
2012-03-12 23:42
363 查看
#include <cstdlib> #include <cstdio> #include <cstring> #include <iostream> #include <time.h> using namespace std; const int HEAPSIZE = 10; int heap[HEAPSIZE + 1]; int MAKEHEAP(int i ,int size) { int child,rootkey,tmp; tmp = heap[i]; rootkey = heap[i]; child = 2 * i; while ( child <= size) { if ( (child < size ) && heap[child] > heap[child+1] ) child++; if( tmp < heap[child] ) //这里我傻了吧唧的打成了heap[i] < heap[child]了,结果WAWAWA break; else{ heap[child/2] = heap[child]; child = child*2; } } heap[child/2] = tmp; } int main() { srand(time(NULL)); for(int i = 1 ; i <= HEAPSIZE; i++) { heap[i] = rand() % 100; } printf("Before Sorting: \n"); for(int i = 1 ; i <= HEAPSIZE; i++) { printf("%d ",heap[i]); if(i % 5 == 0 ) printf("\n"); } for(int i = (HEAPSIZE ) / 2; i > 0 ; i--) { MAKEHEAP(i,HEAPSIZE); } int tmp = 0; printf("After sorting:\n"); for (int i = HEAPSIZE - 1 ; i > 0; i--) { tmp = heap[1]; heap[1] = heap[ i + 1]; printf("%d ",tmp); if( i % 5 == 0 ) printf("\n"); MAKEHEAP(1,i); } printf("%d ",heap[1]); return 0; }
相关文章推荐
- 邝斌的ACM模板(欧拉函数)
- ACM 模板
- ACM前奏模板
- 杭电ACM 1028 Ignatius and the Princess III(纯母函数模板)
- C++模板堆排序
- ACM_模板_Tarjan算法
- ACM文件读写模板
- ACM_模板_Gale_Shapley算法(稳定婚姻)
- ACM模板
- ACM模板——快速判断素数
- ACM常用模板——数据结构——线段树
- 一些经典的ACM模板
- 2017年 ACM Journal Latex templates 新模板生成 acmart.cls 文件
- ACM/CF赛制getstart模板
- ACM 模板列表
- ACM模板--邻接矩阵 有向图
- 2017年ACM模板(常用)弱渣整理 三、图论
- [ACM模板]AC自动机
- ACM模板 欧拉函数
- Genius ACM HihoCoder - 1384 倍增/归并排序模板