堆排序
2015-09-16 20:38
246 查看
//大根堆 void HeapAdjust(int H[],int s, int m) { int rc = H[s]; for(int i=2*s;i<m;i*=2) { if (H[i]>H[i+1]) i++; if(H[s]<H[i]) { H[s] = H[i]; s = i; } else break; } H[s] = rc; } void HeapSort(int H[],int length) { for (int i = length/2;i>0;i++) { HeapAdjust(H,i,length); } for(int j = length; j>1;j--) { H[1] = H[j]; HeapAdjust(H,1,j-1); } }
相关文章推荐
- SQL查询结果把两个字段拼接到一起
- java map的使用
- 3W咖啡商业计划书模板
- 虚析构函数
- uva 10815(set使用练习)
- Java 策略模式
- 逆向编程与反汇编的区别
- HDU 5438 Ponds(dfs)——2015 ACM/ICPC Asia Regional Changchun Online
- JavaScript调试工具
- Block传值
- easyui+rest服务,ajax请求session过期不跳转问题解决
- 三个数排序问题
- Amon君的数论模板
- 莫比乌斯反演1-x1-y,中的质数GCD(a,b)
- 测试用例设计
- 二叉树的创建算法
- JavaScript调试工具
- SQL Server ->> DISABLE索引后插入更新数据再REBUILD索引 和 保留索引直接插入更新数据的性能差异
- Android屏幕适配及DisplayMetrics解析
- 设计模式 命令模式 之 管理智能家电