堆排序源代码

本文详细介绍了一种高效的排序算法——堆排序的实现过程。通过使用C语言,文章展示了如何构建最大堆,并利用调整函数来维持堆的性质,最终完成对数组元素的排序。代码示例清晰地说明了堆排序的步骤,包括初始化堆、交换元素和调整堆结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include #include #include #define Left 2*root+1 #define Right 2*root+2 void adjust(int arr[],int nLength,int root) { if(arr==NULL||nLength<0)return; while(1) { if(Rightarr[Right]) { if(arr[Left]>arr[root]) { arr[Left] = arr[root] ^ arr[Left]; arr[root] = arr[root] ^ arr[Left]; arr[Left] = arr[root] ^ arr[Left]; root = Left; } else { break; } } else { if(arr[Right]>arr[root]) { arr[Right] = arr[root] ^ arr[Right]; arr[root] = arr[root] ^ arr[Right]; arr[Right] = arr[root] ^ arr[Right]; root = Right; } else { break; } } } else if(Leftarr[root]) { arr[Left] = arr[root] ^ arr[Left]; arr[root] = arr[root] ^ arr[Left]; arr[Left] = arr[root] ^ arr[Left]; root = Left; } else { break; } } else { break; } } } void HeapSort(int arr[],int nLength) { int i=0; if(arr==NULL||nLength<0)return; for(i=nLength/2-1;i>=0;i--) { adjust(arr,nLength,i); } for(i=nLength-1;i>=0;i--) { arr[0] = arr[i] ^ arr[0]; arr[i] = arr[i] ^ arr[0]; arr[0] = arr[i] ^ arr[0]; adjust(arr,i,0); } } int main() { int arr[] = {12,9,3,0,4,8,7,11,2,1,6}; int i; HeapSort(arr,sizeof(arr)/sizeof(arr[0])); for(i = 0;i<sizeof(arr)/sizeof(arr[0]);i++) { printf(?%d ?,arr[i]); } printf(?\n?); system(?pause?); return 0; return 0; }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值