堆排序

C代码:

#include <stdio.h> void printArray(int a[], int len) { for(int i=0; i<len; ++i) { if(0==i) printf("[%d,",a[i]); else if(i < len-1) printf("%d,",a[i]); else printf("%d]\n",a[i]); } } //将一个整型数组中的元素调整为大根堆 void HeadAdjust(int data[], int s, int m) { int tmp, j; tmp = data[s]; for(j=2*s+1; j<=m; j=j*2+1){ if(j<m && data[j] < data[j+1]) ++j; if( tmp >= data[j] ) break; data[s] = data[j]; s = j; } data[s] = tmp; } void HeadSort(int data[], int n) { int i, tmp; //将data[0...n-1]调整为大根堆 for(i=n/2-1; i>=0; --i) { HeadAdjust(data,i,n-1); } for(i=n-1; i>0; --i){ tmp = data[0]; data[0] = data[i]; data[i] = tmp; HeadAdjust(data, 0, i-1); } } int main(){ int a[] = {4,10,55,23,5,22,32,12,3,2}; int len = sizeof(a)/sizeof(a[0]); printArray(a,len); //HeadAdjust(a,0,len-1); HeadSort(a, len); printArray(a,len); return 0; }
**
常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义