堆排序----(排序算法六)
2013-10-24 18:48
309 查看
1.算法原理
2.算法实现
#include <stdio.h> //printArray打印出数组 void printArray(int a[],int size){ printf("数组为:[%d] ",a[0]); for (int i=1;i<size;i++) { printf(" %x ",a[i]); } printf("\n"); } //堆调整 void HeapAdjust(int a[],int s,int m){ int temp=a[s]; for(int j=2*s;j<=m;j*=2){ if(j<m && a[j]<a[j+1]){ ++j; } if (!(temp<a[j])) { break; } a[s]=a[j]; s=j; } a[s]=temp; } void main() { //a[0]为监视哨 int a[9]={0,0x49,0x38,0x65,0x97,0x76,0x13,0x27,0x49}; int n=8; printArray(a,9); //建堆 for (int i=n/2;i>0;--i) { HeapAdjust(a,i,n); } printArray(a,9); //输出堆 for (int j=n;j>1;--j) { a[0]=a[1]; a[1]=a[j]; a[j]=a[0]; HeapAdjust(a,1,j-1); } printArray(a,9); }
3.结果
数组为:[0] 49 38 65 97 76 13 27 49 数组为:[0] 97 76 65 49 49 13 27 38 数组为:[39] 13 27 38 49 49 65 76 97
相关文章推荐
- 教你使用shell数组
- 图形学 Direct3D的3D模型处理1
- 堆排序----(排序算法六)
- MySQL数据备份之mysqldump使用
- Nginx 负载均衡模块 ngx_http_upstream_module 详述
- Nginx 负载均衡模块 ngx_http_upstream_module 详述
- sql字符串处理
- 哈希表
- Linux chmod授权命令说明
- float类型
- java:日期相关Date,Calendar,SimpleDateFormat
- uva 1428 - Ping pong
- python 变量作用域
- 网络第三课(2)--解包(dns域名解析)
- 我的词库表——OJT培训
- Android SDK无法更新问题解决
- 引入jquery后不执行jquery代码的教训
- Linux通过JNI加载动态so链接出现java.lang.UnsatisfiedLinkError异常解决
- Oracle中的case when的使用
- (转载)SQL语句,纵列转横列