建堆遇到的问题c++/linux

新人上路,学习堆;
运行时遇到:段错误 (核心已转储);

#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