70,034
社区成员
发帖
与我相关
我的任务
分享#include<iostream>
using namespace std;
void max_heapify(int *a,int heap_size,int i){
int l=2*i,r=l+1,largest=0;
if(l<heap_size&&a[l]>a[i]){
largest=l;
}
else
largest=i;
if(r<heap_size&&a[r]>a[largest])
largest=r;
if(largest!=i){
int tmp=a[i];
a[i]=a[largest];
a[largest]=tmp;
max_heapify(a,heap_size,largest);
}
}
void build_max_heap(int *a){
int heap_size = sizeof(a)/sizeof(*a);
for(int i=heap_size/2-1;i>=0;--i){
max_heapify(a,heap_size,i);
}
}
int main(){
int a[]={14,2,8,7,16,1,4,9,3,10};
build_max_heap(a);
for(int i=0;i<sizeof(a)/sizeof(*a);++i)
printf("%d ",a[i]);
//system("pause");
}