堆排序
2016-04-23 17:22
330 查看
#include<stdio.h> #define MAX 255 //堆排序学习 int R[MAX]; void Heapify(int s,int m) { //调整堆 int j,temp; temp=R[s]; j=2*s; while(j<=m) { if(j<m&&R[j]>R[j+1]) j++; if(temp<R[j]) break; R[s]=R[j]; s=j; j=j*2; } R[s]=temp; } void BuildHeap(int n) { //初始建堆 int i; for(i=n/2;i>0;i--) Heapify(i,n); } void Heap_sort(int n) { //堆排序 int i; BuildHeap(n); for(i=n;i>1;i--) { R[0]=R[1];R[1]=R[i];R[i]=R[0]; Heapify(1,i-1); } } int main() { //测试函数 printf("堆排序示例:\n"); int n,i; printf("Please input the number under %d\n",MAX); scanf("%d",&n); if(n>MAX) { printf("The number is not right!\n"); return 0; } printf("Please input the array one by one:\n"); for(i=1;i<=n;i++) { scanf("%d",&R[i]); } printf("The array you input is:\n"); for(i=1;i<=n;i++) { printf("%d ",R[i]); } printf("The array after Heap_sort is:\n"); Heap_sort(n); for(i=1;i<=n;i++) { printf("%d ",R[i]); } return 0; }
相关文章推荐
- 创建maven父子工程
- 80秒验证13亿个身份证号码,包含省市县验证
- 【转】Struts1和Struts2的区别比较
- motto10
- 最长公共子序列问题
- MySQL 数据库 练习题
- 编程之美精确表达浮点数
- 工厂模式
- MySQL 数据库 常用函数
- 使用TexturePackerGUI配合NGUI打包图集
- 中外饮食类英语单词大全
- 背包问题-堆栈-找出其中一组解(总体积为T,n件物品体积分别是w1,w2,...,w2n,找出若干件恰好装满背包)
- Android Services 创建一个Bound服务
- 团队开发——个人工作总结05
- 全局侧滑
- 欢迎使用CSDN-markdown编辑器
- Eclipse下Genymotion模拟器的安装
- 有赞搜索引擎实践(算法篇)
- ArcGIS Desktop 高(新)版本数据库迁移到较低(旧)版本数据库操作方法
- Less函数说明