新人上路,学习堆;
运行时遇到:段错误 (核心已转储);
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int n=0;
int a[100];
void maxheap(int node,int i){
int l,r;
l=i*2;r=i*2+1;
int k=i;
if(i<=n/2){
if(a[l]>node)k=l;
else if(a[r]>node)k=r;
if(k!=i){
swap(a[i],a[k]);
maxheap(a[k],k);
}
if(k>n) return;
}
}
void make(int node){
maxheap(a[node],node);if(node<=n/2){
make(node*2);
make(node*2+1);}
else return;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
make(1);
for(int i=1;i<=n;i++)cout<<a[i];
return 0;
}
https://blog.csdn.net/pursue_my_life/article/details/80253469